我在一个名为Course的模式中有一个名为students的数组。我创建了一条路线,允许我使用学生ObjectID
将学生添加到此阵列中,如下所示:
router.put('/addStudent/:courseID', function (req, res) {
Course.findOneAndUpdate({courseID: req.params.courseID}, {$push: {students: req.body.students}})
.populate('students')
.exec(function (err, course) {
if (err) return res.status(500).send("There was a problem adding this information to the database");
res.status(201).send(course);
})
});
当我尝试使用以下JSON主体向我的端点发出PUT请求时:
{
"students":["5b1f06cafa355c2d187c344f"]
}
根本没有任何事情发生,它只是将我的课程发回给学生证而不添加。如何制作它以便我可以为阵列添加更多学生ID?我不希望它用学生ID替换数组,我想在我提出更多请求时继续添加更多数据。
谢谢!
答案 0 :(得分:2)
put请求将更新你的db和mongoose的findOneAndUpdate
方法也用于更新当前项目,你需要在mongoose中使用post request和save
方法,而不是你想要创建一个新项目。
答案 1 :(得分:1)
Course.findOneAndUpdate(
{ courseID: req.params.courseID },
{ $push: { students: { $each: req.body.students } } }
)
Course.findOneAndUpdate(
{ courseID: req.params.courseID },
{ $addToSet: { students: { $each: req.body.students } } }
)
答案 2 :(得分:0)
你可以试试这个:
Course.findOneAndUpdate(
{ courseID: req.params.courseID },
{ $push: {
students: req.body.students
}}, options, function(err, values){
});