【问题标题】:Node.js JSON undefinedNode.js JSON 未定义
【发布时间】:2015-09-16 03:20:14
【问题描述】:
{ _id: 55cacecf5bccb3b660b4e0af,
  created_at: Wed Aug 12 2015 12:42:55 GMT+0800 (SGT),
  updated_at: Wed Aug 12 2015 12:42:55 GMT+0800 (SGT),
  id: '0000',
  keyname: 'Test Key 3',
  postalcode: '652811',
  starttime: Fri Jul 31 2015 11:33:22 GMT+0800 (SGT),
  endtime: Fri Jul 31 2015 11:33:22 GMT+0800 (SGT),
  __v: 0 }

当我尝试使用 json.id 获取 id 时,它给了我一个未定义的值。

我尝试使用 JSON.parse 解析为 JSON,但它给了我这个错误。这个 JSON 来自 MongoDB

undefined:1 { _id: 55cacecf5bccb3b660b4e0af, ^ SyntaxError: Unexpected token _

【问题讨论】:

  • 那不是 JSON。 JSON 始终是一个字符串,并且需要在键和字符串值(如 55cacecf5bccb3b660b4e0afWed Aug 12 2015 12:42:55 GMT+0800 (SGT))周围加上引号。此外,您没有名为 id 的属性,但您有一个名为 _id 的属性。
  • 有什么方法可以将其转换为 JSON 吗?我的属性id 是 0000
  • 目前还不清楚“这个”是什么。它是一个对象,你打印出来并复制出来的东西吗?然后“也许”——JSON 不支持日期,因此它们应该呈现为字符串或时间戳。它是你以某种方式拥有的字符串吗?那么这将是很多工作,您应该尝试获取底层对象。
  • 您显然正在使用猫鼬(标签中未提及)从 MongoDB 返回一个对象。它不是“JSON”,而只是一个普通的 JavaScript 对象,或者更具体地说是一个“猫鼬文档”。作为从 mongoose 返回的东西,应该有一个“id”访问器,它已经作为 _id 字段的别名存在,这是强制性的,除非您明确调用 .toObject() 以返回一个普通对象或使用“原始”。因此,您只需像访问任何其他 JavaScript 对象一样访问属性。 MongoDB 说的不是 JSON,而是 BSON,并且总是由驱动程序编组为本地语言形式。

标签: javascript json node.js mongodb


【解决方案1】:

它看起来像一个猫鼬查询结果。所以不用JSON解析,直接用_id获取值即可。

例如:

如果查询结果为data,则使用data._id访问_id字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 2017-05-22
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 2015-11-14
    相关资源
    最近更新 更多