首页 > 解决方案 > 如何真正设置猫鼬默认值,尤其是。布尔值?

问题描述

我有以下架构:

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

但是我发现如果我查询“日期”,日期是在文档上设置的,但是如果我查询“只读”,它不会设置为 false,而是会在文档上返回 false。例如:

Profile.find({readonly: false})

不会返回任何文件。但是,如果我这样做:

Profile.find({})

我将收到所有文件,属性“只读”将被列为“假”。

同时,如果当我创建文档时,我会:

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

上面相同的 find 命令将列出该文档。似乎布尔值的默认值是隐式设置的,并且在读取文档时可用,而不是查询。有没有办法确保它在所有文档上都设置并可以找到,就像“创建”日期属性一样,还是我必须手动在所有新文档上设置它?

标签: mongoosefindbooleandefault

解决方案


代替

readonly: {
    type: Boolean,
    default: false
}

尝试将 ' ' 设置为 false,因此它将是:

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

根据 mongoose文档,mongoose 将以下值转换为 false:

  • '错误的'
  • 0
  • '0'
  • '不'

推荐阅读