我正在尝试将另一个属性添加到从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();
});
})
我知道将另一个属性添加到现有对象的方法与此类似,只需指定属性名称并为其设置值,因此我不知道为什么它在这种情况下不起作用。
希望你能解释并帮助我为什么它不起作用。
使用Mongoose有点复杂:默认情况下,MongooseDocument
由查询返回,并且您尝试添加到此类文档的属性不会反映在其序列化值(响应中发送的值)上。
一种可能的方法是使用lean()
方法来启用精益选项。引用the doc:
从启用了
lean
选项的查询返回的文档是普通的javascript对象,而不是MongooseDocuments
。他们没有保存方法,getter / setter或其他Mongoose魔法应用。