【问题标题】:nodejs "undefined" when stringifying Mongoose object字符串化Mongoose对象时nodejs“未定义”
【发布时间】:2020-08-20 01:31:17
【问题描述】:

在我的代码中,我有以下控制台日志:

console.log(JSON.stringify(department.locationFilter, null, 2));
console.log(JSON.stringify(department.locationFilter.geoLocation, null, 2));

第一个日志结果:

{
  "city": "Stuttgart",
  "radius": 50,
  "geoLocation": {
    "type": "Point",
    "coordinates": [
      9.1800132,
      48.7784485
    ]
  }
}

第二个日志结果:

undefined

当我登录"geoLocation" in department.locationFilter 时,它也会导致false

我不明白为什么 geoLocation 是 undefined,因为它存在于 JSON 对象中。

更多信息,从mongodb读取部门。

【问题讨论】:

  • 你使用猫鼬吗?因为 Mongoose 以生成奇怪且不可变的对象而闻名。您记录的内容不一定是您认为的 JSON,而是 Mongoose 的一些怪人。首先尝试将 Mongoose 对象转换为普通的普通对象:department = department.toObject() 然后再试一次
  • geoLocation 是否有任何不可见的空白字符?
  • geoLocation 在所有记录中都可用吗?
  • 是的,我正在使用猫鼬。没有空格
  • @JeremyTille 你的小费有效。我会接受它作为答案。奇怪的事情,因为城市和半径工作,但地理位置不是

标签: javascript node.js json mongodb mongoose


【解决方案1】:

Mongoose 以生成奇怪且不可变的对象而闻名。您记录的内容不一定是您认为的 JSON,而是 Mongoose 的一些怪人。尝试先将 Mongoose 对象转换为普通的普通对象:department = department.toObject()

另外,如果您只需要数据而不需要完整的 Mongoose 对象,您可以使用 .lean() 进行查询:

Model.find({}).lean()

您将获得开箱即用的简单对象,并且 lean() 更快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 2018-06-07
    • 2013-09-14
    • 2012-12-24
    相关资源
    最近更新 更多