使用Express和Mongoose更新嵌套数组

3
我有一个使用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”。
有人能给一些提示,为什么我不能使用上述代码更新出席者的特定信息吗?

2
我猜测代码 event.attendees: req.body.attendees; 是一个笔误,你的意思应该是 event.attendees = req.body.attendees; - Andrew Lavers
1个回答

2
看起来你需要在:处使用=;)
event.attendees: req.body.attendees;

哦,天啊,我已经看了三个多小时了。你是完全正确的,现在它更新得非常好。谢谢!!! - wiwa1978

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接