Installeren is eenvoudig via npm, eenvoudig:
npm install mongoose-friends --save
Ik heb geen ervaring met MEAN.JS, maar het lijkt voor het grootste deel een verzameling generatoren te zijn om een hoekige/express-app met CRUD-patroon te maken. Als zodanig lijkt het de filosofie van het raamwerk te volgen om de vriendschap als een CRUD-bron te creëren.
yo
. gebruiken zoals ze suggereren:
yo meanjs:crud-module friendship
Dit genereert de MVC voor een vriendschapsmodel, maar maakt een aantal onjuiste aannames over het model zelf, namelijk dat het een eersteklas mangoestmodel is. Met deze plug-in is dat niet het geval. In plaats daarvan maken vriendschappen deel uit van een ingesloten verzameling in het gebruikersrecord, de plug-in biedt daarvoor CRUD-methoden.
Voeg eerst de plug-in toe aan uw gebruikersmodel.
// in app/models/user.server.model.js
var friends = require("mongoose-friends");
// ...
UserSchema.plugin(friends());
Het gegenereerde model op app/models/friendship
, en verwijzingen ernaar in de gegenereerde bestanden, moeten worden verwijderd. In plaats van een Friendship
model, vriendschappen worden CRUD'd via de plug-inmethoden die aan uw User
zijn toegevoegd model.
De controller gegenereerd op app/controllers/friendships.server.controller.js
zal waarschijnlijk de meeste verandering vereisen.
create
, zou hier bijvoorbeeld van veranderen:
var friendship = new Friendship(req.body);
friendship.user = req.user;
friendship.save(callback);
Naar iets meer als:
req.user.requestFriend(req.body.user, callback);
De routes moeten mogelijk ook worden gewijzigd, afhankelijk van hoe uw toepassing vriendschappen gebruikt. Vriendschappen van de plug-in zijn geen eersteklas bron, maar eerder een ingebedde verzameling van een gebruiker. Als zodanig zijn er geen openbare /friendships
traject bijvoorbeeld. Ofwel zou die route alleen de vrienden van de ingelogde gebruikers moeten retourneren, of je zou een vriendschapsroute willen toewijzen die specifiek is voor de gebruiker, b.v. /users/ID/friendships
, in het geval dat de vriendschappen van een gebruiker zichtbaar waren voor anderen dan de gebruiker zelf.
Hoe dan ook, dit is ongetwijfeld hopeloos onvolledig en misschien zelfs misleidend, maar ik hoop dat het genoeg is om u op weg te helpen met de implementatie.