使用Express和Mongoose更新嵌套数组

时间:2015-04-28 21:43:18

标签: node.js express

我有一个Mongoose的Express应用程序。我有一个模特

var AttendeeSchema   = new Schema({
    name: String,
    registered: Boolean
});

var EventSchema   = new Schema({
    name: String,
    description: String,
    attendees : [AttendeeSchema],
    created: { type: Date, default: Date.now },
    updated: { type: Date, default: Date.now }
});

创建活动的代码是:

router.route('/:event_id')
    .get(function(req, res) {
        Event.findById(req.params.event_id, function(err, event) {
            if (err)
                res.send(err);
            res.json(event);
        });
    })

    .put(function(req, res) {
        Event.findById(req.params.event_id, function(err, event) {

            if (err)
                res.send(err);

            event.name = req.body.name;
            event.description = req.body.description; 
            event.attendees: req.body.attendees;

            event.save(function(err) {
                if (err)
                    res.send(err);

                res.json({ message: 'Event updated successfully!' });
            });

        });
    })

更新活动的代码是:

router.route('/:event_id')    
    .put(function(req, res) {
        Event.findById(req.params.event_id, function(err, event) {

            if (err)
                res.send(err);

            event.name = req.body.name;
            event.description = req.body.description; 
            event.attendees: req.body.attendees;

            event.save(function(err) {
                if (err)
                    res.send(err);

                res.json({ message: 'Event updated successfully!' });
            });

        });
    })

问题是正在成功创建事件,但是当我尝试更新事件时,它只更新事件名称和描述,但不更改与会者姓名或注册状态。我还注意到版本没有从“__v0”更新为“__v1”

有人提示我为什么无法使用上述代码更新与会者的具体信息?

1 个答案:

答案 0 :(得分:2)

看起来您需要=,其中有:;)

event.attendees: req.body.attendees;