无法向js对象添加属性

Unable to add properties to js object

本文关键字:添加 属性 对象 js      更新时间:2023-09-26

我正在返回一个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
})

可能是什么问题?

啊。。我的对象是一个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) {      
  ...
});