A instalação é fácil via npm, simplesmente:
npm install mongoose-friends --save
Não tenho experiência com MEAN.JS, mas parece ser na maior parte uma coleção de geradores para criar um aplicativo angular/express com padrão CRUD. Como tal parece seguir a filosofia do framework para criar a amizade como um recurso CRUD.
Usando
yo
como eles sugerem:yo meanjs:crud-module friendship
Isso gerará o MVC para um modelo de amizade, mas fará algumas suposições incorretas sobre o próprio modelo, ou seja, que é um modelo mangusto de primeira classe. Com este plugin, não é. Em vez disso, as amizades fazem parte de uma coleção incorporada no registro do usuário, o plug-in fornece métodos CRUD para eles.
Primeiro, adicione o plugin ao seu modelo de usuário.
// in app/models/user.server.model.js
var friends = require("mongoose-friends");
// ...
UserSchema.plugin(friends());
O modelo gerado em
app/models/friendship
, e as referências a ele nos arquivos gerados, precisarão ser removidas. Em vez de uma Friendship
modelo, as amizades serão CRUD'd através dos métodos de plug-in adicionados ao seu User
modelo. O controlador gerado em
app/controllers/friendships.server.controller.js
provavelmente exigirá a maior mudança. create
, por exemplo, mudaria disso:var friendship = new Friendship(req.body);
friendship.user = req.user;
friendship.save(callback);
Para algo mais como:
req.user.requestFriend(req.body.user, callback);
As rotas também podem precisar ser alteradas, dependendo de como seu aplicativo usa amizades. Amizades do plugin não são um recurso de primeira classe, mas sim uma coleção incorporada de um usuário. Como tal, não há
/friendships
público rota, por exemplo. Ou essa rota precisaria retornar apenas os amigos dos usuários conectados, ou você deseja mapear uma rota de amizade específica para o usuário, por exemplo. /users/ID/friendships
, no caso em que as amizades de um usuário foram visualizadas por outras pessoas que não o próprio usuário. De qualquer forma, isso é sem dúvida lamentavelmente incompleto e talvez até equivocado, mas espero que seja o suficiente para você começar a implementação.