Die Installation ist einfach über npm, einfach:
npm install mongoose-friends --save
Ich habe keine Erfahrung mit MEAN.JS, aber es scheint größtenteils eine Sammlung von Generatoren zu sein, um eine Winkel-/Express-App mit CRUD-Muster zu erstellen. Als solches scheint es der Philosophie des Frameworks zu folgen, die Freundschaft als CRUD-Ressource zu erstellen.
Mit yo
wie sie vorschlagen:
yo meanjs:crud-module friendship
Dadurch wird der MVC für ein Freundschaftsmodell generiert, es werden jedoch einige falsche Annahmen über das Modell selbst getroffen, nämlich dass es sich um ein erstklassiges Mungo-Modell handelt. Mit diesem Plugin ist es nicht. Vielmehr sind Freundschaften Teil einer eingebetteten Sammlung im Benutzerdatensatz, das Plugin stellt CRUD-Methoden für sie bereit.
Fügen Sie zunächst das Plugin zu Ihrem Benutzermodell hinzu.
// in app/models/user.server.model.js
var friends = require("mongoose-friends");
// ...
UserSchema.plugin(friends());
Das generierte Modell unter app/models/friendship
und Verweise darauf in den generierten Dateien müssen entfernt werden. Statt einer Friendship
Modell, Freundschaften werden durch die Plugin-Methoden, die Ihrem User
hinzugefügt werden, CRUD'd Modell.
Der unter app/controllers/friendships.server.controller.js
generierte Controller wahrscheinlich die meisten Änderungen erfordern.
create
, zum Beispiel würde sich ändern von:
var friendship = new Friendship(req.body);
friendship.user = req.user;
friendship.save(callback);
Zu so etwas wie:
req.user.requestFriend(req.body.user, callback);
Die Routen müssen möglicherweise ebenfalls geändert werden, je nachdem, wie Ihre Anwendung Freundschaften verwendet. Freundschaften des Plugins sind keine erstklassige Ressource, sondern eine eingebettete Sammlung eines Benutzers. Daher gibt es keine öffentlichen /friendships
Strecke zum Beispiel. Entweder müsste diese Route nur die Freunde des angemeldeten Benutzers zurückgeben, oder Sie möchten eine benutzerspezifische Freundschaftsroute abbilden, z. /users/ID/friendships
, wenn die Freundschaften eines Benutzers von anderen als dem Benutzer selbst einsehbar waren.
Wie auch immer, dies ist zweifellos erbärmlich unvollständig und vielleicht sogar fehlgeleitet, aber ich hoffe, es reicht aus, um Ihnen den Einstieg in die Implementierung zu erleichtern.