2016-06-05 2 views
0

По какой-то причине mongoose, похоже, не может найти мой документ после вызова find из-за пользовательского идентификатора.Mongoose найти на пользовательском _id не работает

Источник задачи:

// ... 
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 } 

Указав, кажется, не в состоянии найти документ с идентификатором ноль, но сразу следует вверх жалуясь, что ключ уже существует со значением 0, когда я пытаюсь создать новый.

После глядя на базу данных, я могу ясно видеть мой документ с _id 0.

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

И это схема я использую:

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

Я пробовал find и findOne в цепных и неразъемных версиях и findById. Ни один из них не обрабатывает существующий документ. Зачем?

ответ

4

У вас отсутствует параметр ошибки в обратном вызове exec. Оно должно быть:

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

второй параметр является результатом документа.

+0

Я не могу поверить, что пропустил это. Благодарю. – NukesForKids

Смежные вопросы