2015-09-08 2 views
1

У меня есть модель мангуста: (С полем, которое имеет значение по умолчанию)Mongoose найти со значением по умолчанию

var MySchema= new mongoose.Schema({ 
    name: {type:String, required: true} 
    isClever: { type: Boolean, default: false } 
}); 

Я могу спасти модель этого типа, просто сохранив имя и в MongoDB, только имя может можно увидеть в документе (а не в поле isClever). Это нормально, потому что дефолты происходят на уровне мангуста. (?)

Проблема, которую я имею, то есть, при попытке получить только люди называли джон и isClever = ложь:

MySchema.find({ 'name' : 'john', 'isClever': false}) 
.exec(function(err, person) 
{ 
    // person is always null 
}); 

Он всегда возвращает нуль. Это связано с тем, как дефолты работают с мангустами? Мы не можем сопоставить значение по умолчанию?

ответ

7

В соответствии с Mongoose docs значения по умолчанию применяются, когда скелет документа сконструирован.

Когда вы выполняете запрос find, он передается Mongo, когда еще не создан документ. Mongo не знает о дефолтах, так как нет документов, где isClever явно true, что приводит к пустым выводам.

Чтобы ваш пример работает, он должен быть:

MySchema.find({ 'name' : 'john', 'isClever': {$ne: true}}) 
Смежные вопросы