定义的变量未定义

Defined variable is undefined

本文关键字:未定义 变量 定义      更新时间:2023-09-26

我正在访问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返回Query对象。它不仅仅是简单的javascript对象。它继承了模型的方法、查询方法、Document的方法。console.log只显示该对象的toString方法结果。它可以通过getter或virtuals进行修改_不带引号的id也指向ObjectId类的String结果。尝试通过客户[0]获取您的价值。get("质量");或者通过customer[0].toObject()将其转换为普通对象;

我把数据插入mongo,运行查询控制台。记录电子邮件、质量等。

一切如愿以偿,没有未定义的洞察力。

我没有使用Mongoose,而是使用mongojs,所以也许mongose中有bug。

这运行良好:

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"