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

问题描述 投票:0回答:1

我正在尝试将另一个属性添加到从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();
  });
})

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

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

javascript node.js mongoose
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.