我正在攻击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)
或其他任何一个时,它工作正常,我得到了预期的价值。
答案 0 :(得分:2)
Mongoose find返回Query对象。它不仅仅是简单的javascript对象。它继承了模型的方法,查询方法,Document的方法。 console.log只显示此对象的toString方法结果。它可以由getter或virtuals修改。 _id没有引号也是ObjectId类的String结果。尝试按客户[0] .get('quality')访问您的值;或者通过customer [0] .toObject();
将其转换为普通对象答案 1 :(得分:0)
答案 2 :(得分:-1)
这很好用:
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"