2015-04-28 29 views
3

我有一個使用Mongoose的Express應用程序。我有一個模型使用Express和Mongoose更新嵌套數組

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

我假設的代碼'event.attendees:req.body.attendees;'是一個錯字,你的意思它是' event.attendees = req.body.attendees;'? –

回答

2

它看起來像你需要一個=,你有一個:;)

event.attendees: req.body.attendees; 
+0

哦,男孩,我一直在看這個3個多小時。你完全正確,現在它正在更新。謝謝!!! – wiwa1978