我正在访问 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/