Installation er let via npm, blot:
npm install mongoose-friends --save
Jeg har ingen erfaring med MEAN.JS, men det ser ud til for det meste at være en samling af generatorer til at skabe en CRUD-mønstret angular/express app. Som sådan ser det ud til at følge filosofien bag rammerne for at skabe venskabet som en CRUD-ressource.
Brug af yo
som de foreslår:
yo meanjs:crud-module friendship
Dette vil generere MVC'en for en venskabsmodel, men vil gøre nogle forkerte antagelser om selve modellen, nemlig at det er en førsteklasses mongoosemodel. Med dette plugin er det ikke. Venskaber er snarere en del af en indlejret samling i brugerregistreringen, plugin'et giver dem CRUD-metoder.
Først skal du tilføje pluginnet til din brugermodel.
// in app/models/user.server.model.js
var friends = require("mongoose-friends");
// ...
UserSchema.plugin(friends());
Den genererede model på app/models/friendship
, og referencer til det i de genererede filer, skal fjernes. I stedet for et Friendship
model, vil venskaber blive CRUD'et gennem plugin-metoderne tilføjet til din User
model.
Controlleren genereret på app/controllers/friendships.server.controller.js
vil sandsynligvis kræve mest ændring.
create
, for eksempel ville ændre sig fra dette:
var friendship = new Friendship(req.body);
friendship.user = req.user;
friendship.save(callback);
Til noget mere som:
req.user.requestFriend(req.body.user, callback);
Ruterne skal muligvis også ændres, afhængigt af hvordan din applikation bruger venskaber. Venskaber af plugin er ikke en førsteklasses ressource, men snarere en indlejret samling af en bruger. Som sådan er der ingen offentlige /friendships
rute, for eksempel. Enten skal ruten kun returnere de loggede brugeres venner, eller også vil du kortlægge en venskabsrute, der er specifik for brugeren, f.eks. /users/ID/friendships
, i det tilfælde, hvor en brugers venskaber kunne ses af andre end brugeren selv.
Under alle omstændigheder er dette uden tvivl sørgeligt ufuldstændigt og måske endda forkert, men jeg håber, det er nok til at få dig i gang med implementeringen.