如何真正设置猫鼬默认值,特别是。布尔值?

时间:2018-11-07 11:28:28

标签: mongoose find boolean default

我有以下架构:

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({})

我将收到所有文档,并且属性“ readonly”将列为“ false”。

如果同时创建文档,我也会这样做:

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

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

1 个答案:

答案 0 :(得分:1)

代替

readonly: {
    type: Boolean,
    default: false
}

尝试将''设置为false,这样将是:

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

根据猫鼬documentation,猫鼬将以下值转换为false:

  • “假”
  • 0
  • '0'
  • 'no'