最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Mongoose填充多个嵌套文档

IT培训 admin 8浏览 0评论

Mongoose填充多个嵌套文档

我搜索了高低,但无法弄清楚如何形成以下填充查询,首先是我的模型:

const CourseSchema = new Schema({
    classes: [{ type: Schema.Types.ObjectId, ref: 'Classroom' }]
});

const ClassSchema = new Schema({
    location: { type: mongoose.Schema.Types.ObjectId, ref: 'Location' },
    instructors: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }],
});

我有一个获得单一课程的终点,但我想在classes中填充location字段和instructorsclasses字段。现在,我可以填充classeslocation中的教师字段,但我不能同时填充它们。这就是我现在所拥有的:

    Course
        .findById(req.params.courseId)
        .populate({
            path: 'classes',
            populate: {
                path: 'instructors',
                model: 'User'
            }
        })

我怎样才能在location中填充classes字段?

谢谢。

回答如下:

请在mongoose v4下尝试这个,这是关于Population的一个很好的链接

   Course
        .findById(req.params.courseId)
        .populate({
            path: 'classes',
            model: 'Classroom',
            populate: {
                path: 'instructors',
                model: 'User'           
            }
        })
        .exec(function(err, cour) {
            if (err)
                console.log(err);
            else {
                Course.populate(cour, 
                    {
                        path: 'classes.location',
                        model: 'Location',
                    }, function(err, c1) {
                        if (err)
                            console.log(err);
                        else
                            console.log(util.inspect(c1, { showHidden: true, depth: null }));                       
                    })
            }
        })

Mongoose填充多个嵌套文档

我搜索了高低,但无法弄清楚如何形成以下填充查询,首先是我的模型:

const CourseSchema = new Schema({
    classes: [{ type: Schema.Types.ObjectId, ref: 'Classroom' }]
});

const ClassSchema = new Schema({
    location: { type: mongoose.Schema.Types.ObjectId, ref: 'Location' },
    instructors: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }],
});

我有一个获得单一课程的终点,但我想在classes中填充location字段和instructorsclasses字段。现在,我可以填充classeslocation中的教师字段,但我不能同时填充它们。这就是我现在所拥有的:

    Course
        .findById(req.params.courseId)
        .populate({
            path: 'classes',
            populate: {
                path: 'instructors',
                model: 'User'
            }
        })

我怎样才能在location中填充classes字段?

谢谢。

回答如下:

请在mongoose v4下尝试这个,这是关于Population的一个很好的链接

   Course
        .findById(req.params.courseId)
        .populate({
            path: 'classes',
            model: 'Classroom',
            populate: {
                path: 'instructors',
                model: 'User'           
            }
        })
        .exec(function(err, cour) {
            if (err)
                console.log(err);
            else {
                Course.populate(cour, 
                    {
                        path: 'classes.location',
                        model: 'Location',
                    }, function(err, c1) {
                        if (err)
                            console.log(err);
                        else
                            console.log(util.inspect(c1, { showHidden: true, depth: null }));                       
                    })
            }
        })

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论