javascript - 已定义变量未定义

标签 javascript node.js mongodb

我正在访问 mongo(通过 mongoose customer.find())并找回看起来像

的东西
[{ _id: 5029a09e099fb5095fdb2d73,
  clientId: 22,
  company: 'X',
  email: 'X@Y.ca',
  firstName: 'X',
  lastName: 'Y',
  quality: 'Sold',
  address: 
   { phone: '',
     alt: '',
     street1: '',
     street2: '',
     city: '',
     state: 'Ontario',
     country: 'Canada',
     code: '' },
  comments: []
}]

请注意,这是直接来自 console.log 的结果。这不是我要输入的内容,这是来自 mongoDB 的结果。 _id 是由 mongo 以这种形式返回的,与问题完全无关。

当我尝试时

console.log(customer[0]) 我明白了

{ _id: 5029a09e099fb5095fdb2d73,
      clientId: 22,
      company: 'X',
      email: 'X@Y.ca',
      firstName: 'X',
      lastName: 'Y',
      quality: 'Sold',
      address: 
       { phone: '',
         alt: '',
         street1: '',
         street2: '',
         city: '',
         state: 'Ontario',
         country: 'Canada',
         code: '' },
      comments: []
    }

如预期的那样

当我尝试 console.log(customer[0].quality) 我得到 undefined

当我尝试 console.log(customer[0].email) 或其他任何方法时,它都可以正常工作,并且我得到了预期值。

据我所知,质量不是一个保留词,我是否遗漏了什么?

最佳答案

Mongoose find返回查询对象。它不仅仅是普通的 javascript 对象。它继承了模型的方法、查询方法、Document 的方法。 console.log 只显示该对象的 toString 方法结果。它可以被 getter 或 virtuals 修改。 _id 不带引号也是 ObjectId 类的 toString 结果。尝试通过 customer[0].get('quality'); 访问您的值(value)或者通过 customer[0].toObject() 将其转换为普通对象;

关于javascript - 已定义变量未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12018385/

相关文章:

javascript - vue.js调用外部js函数进行搜索

javascript - Semantic-ui 搜索局部静态变量,为什么没有结果?

javascript - 在 html 页面的头部而不是单独的文件中包含 css 的开销

javascript - 如何使用 Express、Jade、Imap 在 NodeJs 上将电子邮件附件传递到消息

javascript - 如何添加从存储桶中删除对象的方法?

javascript - 图像映射的悬停和选定状态

node.js - Mongoose 更新条件 PDT 日期/型号 ISO 日期

MongoDB:如何通过嵌套文档中的 id 查找文档

python - 查询 MongoDB 中不包含某些字段的列表

javascript - 从客户端 Controller (MEAN.JS) 指定 Mongo 查询参数