【问题标题】:Mongoose : Populate nested schemasMongoose:填充嵌套模式
【发布时间】:2014-08-13 08:39:47
【问题描述】:

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

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);

我希望最终得到用户的结果,解决会议的嵌套与会者

{
"_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);
            }
        );
    })

【问题讨论】:

  • 如何保存会议?你用 push 方法了吗?
  • 是的,我正在使用推送方法。

标签: node.js mongodb mongoose


【解决方案1】:

这是嵌套种群的正确方法

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 population

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 2020-06-07
    • 2019-12-06
    • 2014-10-27
    相关资源
    最近更新 更多