当它不应该#o; t时,Mongoose找到空数组

时间:2014-10-01 16:32:59

标签: javascript node.js mongodb mongoose

我正在尝试找到SoldProduct intimeOrderNumber等于'3'

var query = { intimeOrderNumber: '3' };

但我得到一个空数组。

SoldProduct.find(query, function(err, soldProducts) {
  if (err) {
    console.log(err);
  } else {
    console.log(soldProducts.length);
    for (var i = 0; i < soldProducts.length; i++) {
      if (soldProducts[i].intimeOrderNumber === '3') {
        console.log(typeof soldProducts[i].intimeOrderNumber);
        console.log(soldProducts[i].intimeOrderNumber);
      }
    }
  }
});

输出:

0

但是当我像这样更改query时:

var query = {};

并运行相同的find,显然实际上 一个SoldProductintimeOrderNumber等于'3',因为输出更改为:

15
string
3

我在intimeOrderNumber: String模型定义中有SoldProduct。为什么第一个查询返回一个空数组?

1 个答案:

答案 0 :(得分:0)

问题在于我直接通过MongoDB控制台将intimeOrderNumber添加到数据库中,我不小心添加了Number而不是String

因此,在查找文档时,'3'3不匹配,因此找不到它。但是当我用空查询找到它时,intimeOrderNumber以某种方式被转换为String,因为这是在模型中设置的方式。