定义的变量未定义

时间:2012-08-18 12:02:32

标签: javascript node.js mongodb

我正在攻击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)或其他任何一个时,它工作正常,我得到了预期的价值。

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

3 个答案:

答案 0 :(得分:2)

Mongoose find返回Query对象。它不仅仅是简单的javascript对象。它继承了模型的方法,查询方法,Document的方法。 console.log只显示此对象的toString方法结果。它可以由getter或virtuals修改。 _id没有引号也是ObjectId类的String结果。尝试按客户[0] .get('quality')访问您的值;或者通过customer [0] .toObject();

将其转换为普通对象

答案 1 :(得分:0)

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

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

我没有使用Mongoose,mongojs,所以也许猫鼬有bug。

答案 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"
相关问题