我是mongoose和node js的新手。我的项目遇到了一些麻烦。 这是我的用户模型
UserSchema = new Schema({
account:String,
password:String,
display_name:String )}
和朋友模特
FriendSchema = new Schema({
friend_from_id:{
type:Schema.ObjectId,
ref:'users'
},
friend_to_id:{
type:Schema.ObjectId,
ref:'users'
}});
和user_status模型
UserStatusSchema = new Schema({
user_id:{
type:Schema.ObjectId,
ref:'users'
},
status:{
type:Boolean
},
status_text:String,
last_updated_at:String});
我如何填充或以任何方式从朋友模型中获得结果
{
"_id": "55145b6b8b9c9e6c1f739441",
"friend_to_id": {
"_id": "5502976dbef9fa180d28ea21",
"display_name": "Jason",
"account": "xxx@ginmed.com",
"status":false,
"status::"how it's going"
},
"friend_from_id": {
"_id": "5502976dbef9fa180d28ea21",
"display_name": "SonPham",
"account": "yyy@ginmed.com",
"status":true,
"status::"how to do it"}
这意味着我想在朋友模型的字段中结合user_status和用户模型
答案 0 :(得分:0)
我不太确定我理解这个问题,但是看起来你有一个用户列表,你想要自我引用,多对多的关系(即用户可以有朋友的并成为许多其他用户的朋友)。要启用此功能,您需要更新用户对象(可能包含其他信息)和friends集合(添加/删除关系)。在没有评论解决方案的情况下,我认为你会通过查看"钩子"来找到你需要的东西。中间件(http://mongoosejs.com/docs/middleware.html)用于猫鼬。这允许您在保存前和保存后阶段执行其他功能。保存用户模型后,可以使用post save挂钩更新好友模型。
UserSchema.post('save', function(doc) {
// Remove deleted friendships and add new ones here
});
关于您提出的解决方案,我会考虑many to many relationship with nosql (mongodb and mongoose)寻找一些可能的替代/改进措施。
答案 1 :(得分:0)
您可以使用以下查询填充这两个集合
FriendSchema.findOne({}).
populate(friend_from_id).
populate(friend_to_id).
exec(function (err, schema) {});