我试图将数据添加到我的mongoDB中定义的名为“signedUp”的数组中,该数组位于时间表架构中。到目前为止,我已经能够正确更新架构的其他字段,但是我的signedUp数组始终为空。我确保添加的变量不为空。
这是我的模式
var TimetableSchema = new mongoose.Schema({
date: {
type: String,
required: true,
trim: true
},
spaces: {
type: Number,
required: true
},
classes: [ClassSchema],
signedUp: [{
type: String
}]
});
这是我的最新尝试,但没有将任何值添加到signedUp数组中。
我的API更新请求
id = {_id: req.params.id};
space = {spaces: newRemainingCapacity};
signedUp = {$addToSet:{signedUp: currentUser}};
Timetable.update(id,space,signedUp,function(err, timetable){
if(err) throw err;
console.log("updates");
res.send({timetable});
});
谢谢
最佳答案
您可以查看db.collection.update()文档。当您尝试将update
作为第三个参数传递时,第二个参数采用$addToSet
,第三个参数表示操作选项。您的操作应如下所示:
id = {_id: req.params.id};
space = { $set: { spaces: newRemainingCapacity }};
signedUp = { $addToSet:{ signedUp: currentUser}};
update = { ...space, ...signedUp }
Timetable.update(id,update,function(err, timetable){
if(err) throw err;
console.log("updates");
res.send({timetable});
});