最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

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

IT培训 admin 5浏览 0评论

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

我正在尝试将另一个属性添加到从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魔法应用。

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

我正在尝试将另一个属性添加到从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魔法应用。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论