Installationen är enkel via npm, helt enkelt:
npm install mongoose-friends --save
Jag har ingen erfarenhet av MEAN.JS, men det verkar för det mesta vara en samling generatorer för att skapa en CRUD-mönstrad angular/express-app. Som sådan verkar det följa filosofin för ramverket för att skapa vänskapen som en CRUD-resurs.
Använder yo
som de föreslår:
yo meanjs:crud-module friendship
Detta kommer att generera MVC för en vänskapsmodell, men kommer att göra några felaktiga antaganden om själva modellen, nämligen att det är en förstklassig mangustmodell. Med detta plugin är det inte det. Snarare är vänskap en del av en inbäddad samling i användarposten, plugin-programmet tillhandahåller CRUD-metoder för dem.
Lägg först till plugin-programmet i din användarmodell.
// in app/models/user.server.model.js
var friends = require("mongoose-friends");
// ...
UserSchema.plugin(friends());
Den genererade modellen på app/models/friendship
, och referenser till det i de genererade filerna, måste tas bort. Istället för en Friendship
modell, vänskap kommer att CRUD'd genom plugin-metoderna som läggs till din User
modell.
Styrenheten genererad på app/controllers/friendships.server.controller.js
kommer förmodligen att kräva mest förändring.
create
, till exempel skulle ändras från detta:
var friendship = new Friendship(req.body);
friendship.user = req.user;
friendship.save(callback);
Till något mer som:
req.user.requestFriend(req.body.user, callback);
Rutterna kan behöva ändras också, beroende på hur din applikation använder vänskap. Insticksprogrammets vänskap är inte en förstklassig resurs, utan snarare en inbäddad samling av en användare. Som sådan finns det inga offentliga /friendships
rutt, till exempel. Antingen skulle den rutten behöva returnera endast de inloggade användarnas vänner, eller så skulle du vilja kartlägga en vänskapsrutt som är specifik för användaren, t.ex. /users/ID/friendships
, i det fall där en användares vänskap var synlig för andra än användaren själv.
Hur som helst, detta är utan tvekan bedrövligt ofullständigt och kanske till och med missriktat, men jag hoppas att det räcker för att du ska komma igång med implementeringen.