无法向js对象添加属性

时间:2013-09-01 01:21:50

标签: javascript node.js mongoose

我正在返回一个Mongoose文档,并希望在我发送之前添加一些元数据。然而,我无法添加任何属性,我不知道为什么。我已经检查过它是可扩展的Object.isExtensible(doc),它是。

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
})

可能有什么问题?

1 个答案:

答案 0 :(得分:34)

啊..我的对象是一个不允许添加属性的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) {      
  ...
});