Instalasi mudah melalui npm, cukup:
npm install mongoose-friends --save
Saya tidak punya pengalaman dengan MEAN.JS, tetapi tampaknya sebagian besar kumpulan generator untuk membuat aplikasi sudut/ekspres berpola CRUD. Dengan demikian tampaknya mengikuti filosofi kerangka kerja untuk menciptakan persahabatan sebagai sumber daya CRUD.
Menggunakan yo
seperti yang mereka sarankan:
yo meanjs:crud-module friendship
Ini akan menghasilkan MVC untuk model persahabatan, tetapi akan membuat beberapa asumsi yang salah tentang model itu sendiri, yaitu bahwa itu adalah model luwak kelas satu. Dengan plugin ini, tidak. Alih-alih pertemanan adalah bagian dari koleksi yang disematkan pada catatan pengguna, plugin menyediakan metode CRUD untuk mereka.
Pertama, tambahkan plugin ke model pengguna Anda.
// in app/models/user.server.model.js
var friends = require("mongoose-friends");
// ...
UserSchema.plugin(friends());
Model yang dihasilkan di app/models/friendship
, dan referensinya di file yang dihasilkan, perlu dihapus. Alih-alih Friendship
model, pertemanan akan CRUD melalui metode plugin yang ditambahkan ke User
Anda model.
Pengontrol dibuat di app/controllers/friendships.server.controller.js
kemungkinan besar akan membutuhkan banyak perubahan.
create
, misalnya akan berubah dari ini:
var friendship = new Friendship(req.body);
friendship.user = req.user;
friendship.save(callback);
Untuk sesuatu yang lebih seperti:
req.user.requestFriend(req.body.user, callback);
Rute mungkin perlu diubah juga, tergantung pada bagaimana aplikasi Anda menggunakan pertemanan. Persahabatan plugin bukanlah sumber daya kelas satu, melainkan kumpulan pengguna yang disematkan. Dengan demikian tidak ada /friendships
publik rute, misalnya. Entah rute itu hanya perlu mengembalikan teman pengguna yang masuk, atau Anda ingin memetakan rute pertemanan khusus untuk pengguna, mis. /users/ID/friendships
, jika pertemanan pengguna dapat dilihat oleh orang lain selain pengguna itu sendiri.
Bagaimanapun, ini tidak diragukan lagi sangat tidak lengkap dan bahkan mungkin salah arah, tetapi saya harap ini cukup untuk membantu Anda memulai implementasinya.