node.js - Mongoose : Populate nested schemas

标签 node.js mongodb mongoose

这是关于 Mongoose 嵌套填充方法。我尝试使用 populate 方法来填充文档,但仍然有问题。

var userSchema = Schema({    
email: {type: String,required: true,unique: true}, 
fullName: String,   
meetings: [{
    type: Schema.Types.ObjectId,
    ref: 'Meeting'
    }]
});

userSchema.statics.findById = function (id, callback) {
this.findOne({
    _id: id
}).populate({
    path: 'meetings',
    select: '_creator topic attendees'
}).populate({
    path: 'meetings.attendees',
    model: Attendee
})
    .exec(callback);
};

var meetingSchema = Schema({
_creator: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User'
},
topic: String,    
attendees: [attendeeSchema]
});


var attendeeSchema = Schema({
_id: false,
attendee: {type: String,required: true,ref: 'User'}
})

var Meeting = mongoose.model('Meeting', meetingSchema);
var User = mongoose.model('User', userSchema);
var Attendee = mongoose.model('Attendee', attendeeSchema);

我想在 session 的嵌套与会者解决后得到用户的结果

{
"_id": "53e87d7bc4088daefc3d5adc",
"email": "david@email.com",
"fullName": "david",
"lastModifiedDate": "2014-08-11T08:23:23.359Z",
"meetings": [{
    "_id": "53e8abf8dd1662000041af5d",
    "topic": "Linkedin",
    "_creator": "53e89187cbed0f0000c534b1",
    "meetingdate": "12/12/2014",
    "attendees": [{
        "email": "david@email.com",
        "fullName": "david",
         "_id": "53e87d7bc4088daefc3d5adc",
    }, {
        "email": "john@email.com",
        "fullName": "john",
         "_id": "53e87d7bc4088daefc3dbaua",
    }]
}],

}

知道填充查询哪里出了问题吗。

我什至尝试过这个,但现在最终响应本身不起作用。

User.findById(userid, function (err, doc) {
                if (err) {return res.send(err);}
        Meeting.populate(doc.meetings, {
                path: 'attendees'
            },
            function (err, response) {
                if (err) {return res.send(err);}
                res.send(response);
            }
        );
    })

最佳答案

这才是嵌套种群的正确做法

User.findById(userid, function (err, doc) {
                if (err) {return res.send(err);}
        User.populate(doc, {
                path: 'Meeting'
            },
            function (err, response) {
                if (err) {return res.send(err);}
                res.send(response);
            }
        );
    })

您可以引用 mongoose 文档 mongoose population

关于node.js - Mongoose : Populate nested schemas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25281695/

相关文章:

javascript - 执行查询时返回 undefined object

node.js - 如何在odoo和node js中获取当前登录的用户ID

javascript - 在 socket.io 服务器之间切换

node.js - Karma e2e 测试运行程序的结果不一致。我该如何调试?

java - 使用 Java 向 MongoDB 中的数组添加值

javascript - Mongoose :找到最近的文件

mongodb - deno 连接到 mongodb

node.js - Node.js 获取 mongoose 回调函数的返回值

mongodb - 从 mlab heroku 检索数据

node.js - 添加新类别时,Mongoose 架构会抛出错误