Как действительно установить мангуст по умолчанию, esp. Boolean? - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть следующая схема:

const profileSchema = new Schema({
created: {
    type: Date,
    default: Date.now
    },
readonly: {
    type: Boolean,
    default: false
    }
});
const Profile = mongoose.model('profile',profileSchema);

Однако я обнаружил, что если я запрашиваю «дату», дата устанавливается в документах, но если я запрашиваю «только для чтения», она НЕ устанавливается в «ложь», но возвращает документ «ложь». Например:

Profile.find({readonly: false})

не вернет никаких документов. Тем не менее, если я сделаю:

Profile.find({})

Я получу все документы, а свойство «только для чтения» будет указано как «ложное».

В то же время, если при создании документа я делаю:

var newProfile = { readonly: false };
new Profile(newProfile).save();

Та же команда поиска выше выведет список этого документа. Кажется, что значение по умолчанию для логических значений неявно установлено и доступно, когда документ читается, а не запрашивается. Есть ли способ убедиться, что он установлен и доступен для поиска во всех документах, так же, как свойство «созданной» даты, или мне нужно установить его для всех новых документов вручную?

1 Ответ

0 голосов
/ 08 ноября 2018

вместо

readonly: {
    type: Boolean,
    default: false
}

Попробуйте поставить '' в false, чтобы получилось:

readonly: {
    type: Boolean,
    default: 'false'
}

В соответствии с документацией mongoose mongoose переводит следующие значения в false:

  • 'ложь'
  • 0
  • '0'
  • 'нет'
...