2017-02-17 42 views
0

我想使用索引替換數組中的對象,但不會保存任何內容。這是該文件的樣子:在Mongoose中替換數組中的對象

{ 
    "_id": { 
     "$oid": "58a71ec0c80a9a0436ae2fb1" 
    }, 
    "owner": "[email protected]", 
    "contacts": [ 
     { 
      "work": "", 
      "home": "", 
      "mobile": "", 
      "email": "", 
      "company": "", 
      "last": "Contact", 
      "middle": "", 
      "first": "New" 
     }, 
     { 
      "first": "Another", 
      "middle": "", 
      "last": "Contact", 
      "company": "", 
      "email": "", 
      "mobile": "", 
      "home": "", 
      "work": "" 
     } 
    ], 
    "__v": 1 
} 

而這就是我試過..

Contacts.findById({_id: "58a71ec0c80a9a0436ae2fb1"}, function(err,document) { 
    document.contacts[req.body.indexOfObjectToBeEdited] = req.body.updatedObject 
    console.log(document) 
    document.save(function(err) { 
     return res.json({event:"Updated Contact"}) 
    }) 
}) 

權之前document.save()我CONSOLE.LOG(文件),它反映了正確的變化。但是當我保存時,mongodb中沒有更新,我也沒有收到任何錯誤。我應該做什麼不同?

+0

的文檔中,你是什麼意思時,你說:「當我打印」?你的意思是在保存功能之後? –

+0

在document.save之前,我將console.log(document)並且它看起來更新了。但是當我在實際保存後檢查數據庫時,它看起來像從未更新過。 – Zach

回答

2

嘗試在保存前插入此行。修改數組需要我們手動告訴貓鼬它被修改了。

document.markModified("contacts"); 

檢查使用說明瞭解更多信息 http://mongoosejs.com/docs/schematypes.html

+0

工作!謝謝! – Zach

+0

很高興幫助... –

+0

學到了新東西! –