我试图将数据添加到我的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});
});

10-06 07:38