Инсталирането е лесно чрез npm, просто:
npm install mongoose-friends --save
Нямам опит с MEAN.JS, но изглежда в по-голямата си част е колекция от генератори за създаване на ъглово/експресно приложение с модел на CRUD. Като такъв изглежда следва философията на рамката за създаване на приятелството като CRUD ресурс.
Използване на yo
както предлагат:
yo meanjs:crud-module friendship
Това ще генерира MVC за модел на приятелство, но ще направи някои неправилни предположения за самия модел, а именно, че той е първокласен мангуст модел. С този плъгин не е така. По-скоро приятелствата са част от вградена колекция в потребителския запис, приставката предоставя CRUD методи за тях.
Първо, добавете приставката към вашия потребителски модел.
// in app/models/user.server.model.js
var friends = require("mongoose-friends");
// ...
UserSchema.plugin(friends());
Генерираният модел в app/models/friendship
и препратките към него в генерираните файлове ще трябва да бъдат премахнати. Вместо Friendship
модел, приятелствата ще бъдат CRUD'd чрез методите на плъгина, добавени към вашия User
модел.
Контролерът, генериран в app/controllers/friendships.server.controller.js
вероятно ще изисква най-много промени.
create
, например ще се промени от това:
var friendship = new Friendship(req.body);
friendship.user = req.user;
friendship.save(callback);
Към нещо повече като:
req.user.requestFriend(req.body.user, callback);
Маршрутите също може да се наложи да се променят в зависимост от начина, по който вашето приложение използва приятелството. Приятелствата на плъгина не са първокласен ресурс, а по-скоро вградена колекция от потребители. Поради това няма публични /friendships
маршрут, например. Или този маршрут ще трябва да върне само приятелите на влезлите потребители, или бихте искали да картографирате маршрут за приятелство, специфичен за потребителя, напр. /users/ID/friendships
, в случай че приятелствата на даден потребител са били видими от хора, различни от самия потребител.
Както и да е, това без съмнение е ужасно непълно и може би дори погрешно, но се надявам, че е достатъчно, за да започнете с внедряването.