Mongoose发现自定义_id无法正常工作

时间:2016-06-05 18:20:47

标签: node.js mongodb

无论出于何种原因,由于自定义ID,mongoose似乎无法在find电话后找到我的文档。

问题的根源:

// ...
models.Item.findOne().where({ _id: item.id }).exec((i) => {
  console.log(item.id, i);
  if (!i) i = new models.Item({ _id: item.id, href: item.href, name: item.name });
  // ...

控制台只记录以下内容:

> 0 null
> MongoError: E110000 duplicate key error index: items.$_id_  dup key: { : 0 }

表示它似乎无法找到ID为零的文档,但是当我尝试创建一个新的时,会立即抱怨该键已经存在且值为0。

查看数据库后,我可以清楚地看到_id为0的文档。

{
  "id": 0,
  // ...
}

这是我正在使用的架构:

const ItemSchema = new mongoose.Schema({
  _id: { type: Number, min: 0, max: 400000, unique: true, required: true },
  // ...
}

我在链式和非链式版本find中尝试了findOnefindById。他们都不是在制作现有文件。为什么呢?

1 个答案:

答案 0 :(得分:4)

您错过了exec回调中的错误参数。它应该是:

models.Item.findOne().where({ _id: item.id }).exec((err, i) => {...

second 参数是文档结果。