定义的variables是未定义的

我打了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的结果。 这不是我input的内容,这是mongoDB的结果。 _id是以mongo的forms返回的,与这个问题完全没有关系。

当我尝试

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 查找返回Query对象。 它不只是简单的JavaScript对象。 它inheritance了你的模型的方法,查询方法,Document的方法。 console.log显示你刚才给这个对象的toString方法的结果。 它可能被getters或virtuals修改。 不带引号的_id也是ObjectId类的结果。 尝试通过客户访问您的价值[0] .get('quality'); 或者通过customer [0] .toObject()将其转换为普通对象;

我把你的数据插入到mongo,运行查询console.log电子邮件,质量等

一切按预期工作,没有明确的见解。

我不使用mongoose,而是使用mongojs,所以也许在mongoose中有bug。

这工作正常:

 var customer = [{ _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) // it will give Sold make _id:5029a09e099fb5095fdb2d73 to _id:"5029a09e099fb5095fdb2d73"