繁体   English   中英

向现有属性添加新属性无效

[英]adding a new property to existing doesn't work

我试图将另一个属性添加到从猫鼬的findOne()许诺返回的现有对象中。 在响应中,我得到的对象没有属性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()方法启用lean选项。 引用文档

从启用了lean选项的查询返回的文档是纯javascript对象,而不是MongooseDocuments 他们没有应用保存方法,吸气剂/设置器或其他猫鼬魔法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM