Javascript 定义的变量是未定义的
我正在访问mongo(通过mongooseJavascript 定义的变量是未定义的,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我正在访问mongo(通过mongoosecustomer.find())并返回类似的内容 [{ _id: 5029a09e099fb5095fdb2d73, clientId: 22, company: 'X', email: 'X@Y.ca', firstName: 'X', lastName: 'Y', quality: 'Sold', address: { phone: '', alt: '', street1: '',
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的结果_mongo正在以这种形式返回id,与问题完全无关
当我尝试
console.log(客户[0])
I获取
{ _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(客户[0].quality)
时,我得到了未定义的
当我尝试console.log(客户[0].email)
或任何其他方法时,它工作正常,我得到了预期的值
据我所知,质量不是一个保留的词,我是否遗漏了什么?这很好:
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"
我将您的数据插入mongo,运行查询控制台。日志电子邮件、质量等
一切都按预期进行,没有未定义的洞察力
我没有使用Mongoose,所以Mongoose中可能有bug。Mongoose返回查询对象。它不仅仅是普通的javascript对象。它继承模型的方法、查询方法和文档的方法。console.log仅显示此对象的字符串方法结果。它可以由getter或virtuals修改_不带引号的id也用于对象id类的字符串结果。尝试按客户[0]访问您的价值。获取(“质量”);或者通过客户[0]将其转换为普通对象 嗯,\u id
不应该是字符串吗?您周围没有引号。@Amaan是对的,上面的结果是SyntaxError:identifier在数字文字之后立即启动,这是控制台的复制粘贴。log@Amaan尽管如此,这是正确的。您是否尝试过for(customer[0]中的var prop){console.log(prop);}
?您是否在输出列表中看到质量
?