Установка проста через npm, просто:
npm install mongoose-friends --save
У меня нет опыта работы с MEAN.JS, но, похоже, по большей части это набор генераторов для создания приложения angular/express с шаблоном 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 с помощью методов плагина, добавленных в вашу модель 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
, в случае, если дружеские отношения пользователя были доступны для просмотра кем-то другим, кроме самого пользователя.
В любом случае, это, без сомнения, ужасно неполно и, возможно, даже ошибочно, но я надеюсь, что этого достаточно, чтобы вы начали реализацию.
person
numbers1311407
schedule
19.06.2014