MongoDB:无法添加到子文档的子文档

时间:2017-03-15 16:47:59

标签: node.js mongodb express

我正在尝试使用Mongoose在问题数组中添加一个条目。 但是,mongoose说我访问的数据是未定义的。

{"content":
    {"_id":"58c6f76e06e6edda1b000007",
     "name":"testCourse",
     "__v":0,
     "subjects": 
         [{"name":"testSubject",
           "_id":"58c6f85280a5d6591c000007",
           "questions":[]}
         ]
     }
}

这是我创建条目的方法:

module.exports.makeQuestion = function(req, res){
    var courseid = req.params.courseid;
    var subjectid = req.params.subjectid;

    console.log("cou:"+ courseid + " sub:"+ subjectid);

    Course.findById(courseid, function(err, course){
      course.subjects.questions.push({question: req.params.question,
                                      answer:req.params.answer})
      sendJSONResponse(res, 200, course);
    });
}

添加条目时我犯了什么错误?

1 个答案:

答案 0 :(得分:0)

这是因为course.subjects是一个数组。因此,它不知道您要将对象推送到哪个子文档。要解决这个问题,您可以执行course.subjects.id(_id).questions.push(question),如果您知道子文档对象的ID,它应该可以工作。否则你必须遍历数组才能找到你正在寻找的数组。