定义的变量未定义

Las*_*ios 6 javascript mongodb node.js

我正在攻击mongo(通过猫鼬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: []
}]
Run Code Online (Sandbox Code Playgroud)

请注意,这是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: []
    }
Run Code Online (Sandbox Code Playgroud)

正如所料

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

当我尝试console.log(customer[0].email)或其他任何一个它工作正常,我得到预期的价值.

据我所知,质量不是一个保守的词,我错过了什么?

Vad*_*hev 2

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