2013-09-01 30 views
14

我正在返回一個Mongoose文檔,並希望在發送它之前向它添加一些元數據。然而,我無法添加任何屬性,我不知道爲什麼。我已經檢查過它是可擴展的Object.isExtensible(doc),它是。無法將屬性添加到js對象

Item.findById(req.params.id).exec(function(err, doc) { 
    doc.blah = 'hello'; 
    console.log(doc); // No trace of 'blah'. I can change/delete existing props however 
}) 

什麼可能是問題?

回答

24

啊..我的對象是一個Mongoose文件,它不允許添加屬性。解決方案是將返回的文檔轉換爲普通對象或在查詢中調用lean()。

Item.findById(req.params.id).exec(function(err, doc) { 
    var obj = doc.toObject(); 
    ... 
}); 

Item.findById(req.params.id).lean().exec(function(err, doc) {  
    ... 
}); 
+0

確實轉換的普通對象有架構方法嗎? – irakli2692