Instalacja jest łatwa dzięki npm, po prostu:
npm install mongoose-friends --save
Nie mam doświadczenia z MEAN.JS, ale wydaje się, że jest to w większości zbiór generatorów do tworzenia aplikacji kątowej/ekspresowej we wzorach CRUD. W związku z tym wydaje się, że podąża za filozofią ram, aby stworzyć przyjaźń jako zasób CRUD.
Używanie yo
jak sugerują:
yo meanjs:crud-module friendship
Spowoduje to wygenerowanie MVC dla modelu przyjaźni, ale spowoduje pewne błędne założenia dotyczące samego modelu, a mianowicie, że jest to model mangusty pierwszej klasy. Z tą wtyczką tak nie jest. Przyjaźnie są raczej częścią kolekcji osadzonej w rekordzie użytkownika, wtyczka zapewnia dla nich metody CRUD.
Najpierw dodaj wtyczkę do swojego modelu użytkownika.
// in app/models/user.server.model.js
var friends = require("mongoose-friends");
// ...
UserSchema.plugin(friends());
Wygenerowany model w app/models/friendship
, a odniesienia do niego w wygenerowanych plikach będą musiały zostać usunięte. Zamiast Friendship
model, przyjaźnie będą CRUD'd za pomocą metod wtyczek dodanych do Twojego User
model.
Kontroler wygenerowany w app/controllers/friendships.server.controller.js
prawdopodobnie będzie wymagać największej zmiany.
create
, na przykład zmieniłoby się z tego:
var friendship = new Friendship(req.body);
friendship.user = req.user;
friendship.save(callback);
Do czegoś bardziej jak:
req.user.requestFriend(req.body.user, callback);
Trasy również mogą wymagać zmiany, w zależności od tego, w jaki sposób aplikacja wykorzystuje przyjaźnie. Przyjaźnie wtyczki nie są zasobem pierwszej klasy, ale raczej osadzoną kolekcją użytkownika. W związku z tym nie ma publicznych /friendships
na przykład trasa. Albo ta trasa musiałaby zwracać tylko znajomych zalogowanych użytkowników, albo chcesz zmapować trasę przyjaźni specyficzną dla użytkownika, np. /users/ID/friendships
, w przypadku, gdy przyjaźnie użytkownika były widoczne dla osób innych niż sam użytkownik.
W każdym razie jest to bez wątpienia żałośnie niekompletne, a może nawet błędne, ale mam nadzieję, że to wystarczy, aby rozpocząć wdrażanie.