【问题标题】:Unable to add properties to js object无法向 js 对象添加属性
【发布时间】:2013-09-04 10:46:33
【问题描述】:

我正在返回一个 Mongoose 文档,并希望在发送之前添加一些元数据。但是,我无法添加任何属性,我不知道为什么。我已经检查过它是否可以使用 Object.isExtensible(doc) 进行扩展。

Item.findById(req.params.id).exec(function(err, doc) {
   doc.blah = 'hello';
   console.log(doc); // No trace of 'blah'. I can change/delete existing props however
})

可能是什么问题?

【问题讨论】:

    标签: javascript node.js mongoose


    【解决方案1】:

    啊.. 我的对象是一个不允许添加属性的 Mongoose 文档。解决方案是将返回的文档转换为普通对象或在查询中调用lea()。

    Item.findById(req.params.id).exec(function(err, doc) {
      var obj = doc.toObject();
      ...
    });
    
    Item.findById(req.params.id).lean().exec(function(err, doc) {      
      ...
    });
    

    【讨论】:

    • 转换后的普通对象有模式方法吗?
    • 宾果游戏!太感谢了。坚持搞清楚!
    • @irakli2692 简单来说,不,你没有。 toObject、toJSON 和 toString 从文档中删除所有与 mongoose 相关的信息,只留下模式信息。因此,您将无法访问架构方法。
    猜你喜欢
    • 2016-04-05
    • 1970-01-01
    • 2020-12-24
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    相关资源
    最近更新 更多