向现有添加新属性不起作用

时间:2017-12-24 10:28:56

标签: javascript node.js mongoose

我正在尝试将另一个属性添加到从mongoose中的findOne() promise返回的现有对象。 在响应中,我得到没有属性convertName

的对象
app.get('/getItem', (req, res) => {

var itemID = req.query.itemID;

Item.findOne({_id: itemID}).then(item => {

    item.convertName = 'cm';
    res.send(item);

  }).catch( err => {
    res.status(401).send();
  });
})

我知道将另一个属性添加到现有对象的方法与此类似,只需指定属性名称并为其设置值,因此我不知道为什么它在这种情况下不起作用。

希望你能解释并帮助我为什么它不起作用。

1 个答案:

答案 0 :(得分:0)

使用Mongoose有点复杂:默认情况下MongooseDocument由查询返回,并且您尝试添加到此类文档的属性不会反映在其序列化值(响应中发送的值)上)。

一种可能的方法是使用lean()方法启用精益选项。引用the doc

  

启用了lean选项的查询返回的文档是普通的   javascript对象,而不是MongooseDocuments。他们没有保存方法,   应用getter / setter或其他Mongoose魔法。