【问题标题】:How to really set a Mongoose default, esp. Boolean?如何真正设置猫鼬默认值,尤其是。布尔值?
【发布时间】:2019-04-10 19:57:07
【问题描述】:

我有以下架构:

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();

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

【问题讨论】:

    标签: mongoose find boolean default


    【解决方案1】:

    代替

    readonly: {
        type: Boolean,
        default: false
    }
    

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

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

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

    • '假'
    • 0
    • '0'
    • '没有'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 1970-01-01
      • 2013-03-06
      • 2019-11-09
      • 2015-03-28
      • 1970-01-01
      • 2011-08-28
      相关资源
      最近更新 更多