6

我正在打 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)或其他任何方法都可以正常工作时,我得到了预期值。

据我所知,质量不是保留词,我是否遗漏了什么?

4

3 回答 3

2

Mongoose查找返回 Query 对象。它不仅仅是普通的 javascript 对象。它继承了模型的方法、查询方法、Document 的方法。console.log 只显示该对象的 toString 方法结果。它可以被 getter 或 virtuals 修改。_id 不带引号也是 ObjectId 类的 toString 结果。尝试通过 customer[0].get('quality'); 访问您的价值 或者通过 customer[0].toObject() 将其转换为普通对象;

于 2012-08-18T17:41:14.940 回答
0

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

一切都按预期工作,没有不确定的洞察力。

我没有使用 Mongoose,而是使用mongojs,所以可能 mongoose 中存在错误。

于 2012-08-18T14:16:49.537 回答
-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"
于 2012-08-18T12:17:36.847 回答