MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Instalando o plugin de amigos do mangusto com o MeanJS


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.