Node.js 如何在mongoose和node js中填充同一记录上的两个集合

Node.js 如何在mongoose和node js中填充同一记录上的两个集合,node.js,mongodb,validation,mongoose,mongoose-populate,Node.js,Mongodb,Validation,Mongoose,Mongoose Populate,我对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:S

我对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'
}});
和用户状态模型

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"}

这意味着我想将用户状态和用户模型结合在一个朋友模型字段中

我不太确定我是否理解这个问题,但似乎您有一个用户列表,您希望为其建立一个自我引用的多对多关系(即,一个用户可以有许多其他用户的朋友,也可以是许多其他用户的朋友)。要启用此功能,您需要同时更新用户对象(可能使用其他信息)和好友集合(使用添加/删除的关系)。在不评论解决方案的情况下,我认为您可以通过查看mongoose的“hooks”中间件()找到所需的内容。这允许您在保存前和保存后阶段执行其他功能。保存用户模型后,可以使用post save挂钩更新好友模型

UserSchema.post('save', function(doc) {
    // Remove deleted friendships and add new ones here
});

至于您提出的解决方案,我将考虑一些可能的替代方案/改进。

您可以使用下面的查询来填充这两个集合

FriendSchema.findOne({}).
populate(friend_from_id).
populate(friend_to_id).
exec(function (err, schema) {});

不客气。如果你觉得它有用,请提高评级。谢谢