【问题标题】:Node Populate Array with object reference节点使用对象引用填充数组
【发布时间】:2021-07-12 04:05:51
【问题描述】:

我需要用来自CoursesSchema的课程(Object_id)填充StudentSchema的课程,这些课程属于与学生专业相同的专业

let StudentSchema = new Schema({
    _id: new Schema.Types.ObjectId,
    emplId: {
        type: Number,
        required: true
    },
    major:{
        type: String,
        required: true
    },
    courses:[{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'courses',
        grade:{
            type: String,
            required: false,
        }
    }],

});
const courseSchema = new mongoose.Schema({
    code: {
        type: String,
        required: true
    }, 
    title: {
        type: String,
        required: true
    },

//array of majors that a courses is required for e.g: ['CS', 'CIS']
    major: {
        type: Array,
        required: false,


    },
//
    CIS:{
        type: Boolean,
        required: false,
    },
    CNT:{
        type: Boolean,
        required: false,
    },
    CS:{
        type: Boolean,
        required: false,
    },
    GIS:{
        type: Boolean,
        required: false,
    },
})

我该怎么办?

StudentCoursesRouter.get('/studentcourses', (req, res) => {
    
    Courses.find({CS: true}, (err, courses) => {

        if ( err ) {
            console.log('Error occured while getting records');
            res.json(err);
        } else {
            courseMap = {}

            courses.forEach(function(course) {
            courseMap[course._id] = course._id;
          });
          
        //res.send(courses);

          Students.find({empleId: 12345678}).courses.push(courses);
        }

res.json(Students);
    })

这就是我正在做的,但它没有填充学生的课程,并为课程提供了一个空数组。

API Request Response Screenshot

【问题讨论】:

    标签: javascript node.js mongodb mongoose mongodb-query


    【解决方案1】:

    您提到了populate,但您没有使用populate

    e.g. Students.find({empleId: 12345678}).populate('course')
    

    如果你想瘦,你还需要安装mongoose-lean-virtuals

    e.g. Students.find({empleId: 12345678}).populate('course').lean({ virtuals: true })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      相关资源
      最近更新 更多