【问题标题】:Using toJSON() to access properties of objects使用 toJSON() 访问对象的属性
【发布时间】:2018-06-07 15:07:57
【问题描述】:
listData.forEach(function (row, index) {
    console.log(row);       --> output JSON format { _id: 5b0bbae16fcc45381a679186, item1: 'item1', item2: 'item2' }
    console.log(row.item1); --> output undefined

    // If using toJSON() then OK
    var json = row.toJSON();
    console.log(json.item1); --> output item1
});

listData: 已经使用 mongoose 从 MongoDB 获取数据

但我不明白为什么会这样

[如果使用 toJSON() 则 OK] 虽然行是 JSON 格式

【问题讨论】:

  • listData 从何而来?我问这个是因为 json 默认情况下不是对象而是字符串。在 javascript 中,它必须被解析为 json 对象。
  • 看起来输出不是JSON格式,是个JS对象。
  • 感谢您的关心。 @Jeroen listData:使用 mongoose 从 MongoDB 获取 DataMaster.find({ table: 1 }).sort('-created').exec()
  • 感谢您的关心。 @Teemu。如果是JS对象,可以通过row.item1获取值?
  • 这就是(对象)您在示例中所写的内容。不要猜测,检查类型。

标签: javascript json node.js


【解决方案1】:

Mongoose 查询将返回 MongooseDocuments 而不是纯 JavaScript 对象。

尝试使用lean() 方法,如下所示:

DataMaster.find({ table: 1 }).sort('-created').lean().exec()

【讨论】:

  • 我使用了lean() 方法。并且可以(无需使用 toJSON())访问对象的属性。因为 Mongoose 查询会返回 MongooseDocuments。感谢您的帮助
  • @TinhNQ 很高兴有帮助!快乐编码
猜你喜欢
  • 2015-01-03
  • 1970-01-01
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 2011-03-09
相关资源
最近更新 更多