Cài đặt dễ dàng thông qua npm, đơn giản:
npm install mongoose-friends --save
Tôi không có kinh nghiệm với MEAN.JS, nhưng có vẻ như phần lớn là một bộ sưu tập các máy phát điện để tạo ra một ứng dụng góc / thể hiện theo mô hình CRUD. Như vậy, nó dường như tuân theo triết lý của khuôn khổ để tạo ra tình bạn như một nguồn tài nguyên CRUD.
Sử dụng yo
như họ đề xuất:
yo meanjs:crud-module friendship
Điều này sẽ tạo MVC cho một mô hình tình bạn, nhưng sẽ tạo ra một số giả định không chính xác về chính mô hình đó, cụ thể là nó là một mô hình mongoose hạng nhất. Với plugin này thì không. Thay vì tình bạn là một phần của tập hợp được nhúng trong hồ sơ người dùng, plugin cung cấp các phương thức CRUD cho họ.
Trước hết, hãy thêm plugin vào mô hình người dùng của bạn.
// in app/models/user.server.model.js
var friends = require("mongoose-friends");
// ...
UserSchema.plugin(friends());
Mô hình được tạo tại app/models/friendship
và các tham chiếu đến nó trong các tệp đã tạo, sẽ cần được xóa. Thay vì Friendship
mô hình, các mối quan hệ bạn bè sẽ được CRUD'd thông qua các phương thức plugin được thêm vào User
của bạn mô hình.
Bộ điều khiển được tạo tại app/controllers/friendships.server.controller.js
có thể sẽ yêu cầu thay đổi nhiều nhất.
create
, ví dụ sẽ thay đổi từ sau:
var friendship = new Friendship(req.body);
friendship.user = req.user;
friendship.save(callback);
Đối với một cái gì đó giống như:
req.user.requestFriend(req.body.user, callback);
Các lộ trình cũng có thể cần thay đổi, tùy thuộc vào cách ứng dụng của bạn sử dụng tình bạn. Tình bạn của plugin không phải là tài nguyên hạng nhất, mà là một tập hợp người dùng được nhúng. Vì vậy, không có /friendships
công khai tuyến đường chẳng hạn. Lộ trình đó sẽ chỉ cần trả lại bạn bè của người dùng đã đăng nhập hoặc bạn muốn lập bản đồ một lộ trình tình bạn cụ thể cho người dùng, ví dụ:/users/ID/friendships
, trong trường hợp tình bạn của một người dùng có thể được xem bởi những người khác chứ không phải chính người dùng đó.
Dù sao, điều này chắc chắn là không đầy đủ và thậm chí có thể sai lầm, nhưng tôi hy vọng nó đủ để giúp bạn bắt đầu triển khai.