我有以下架构:
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命令将列出此文档。似乎布尔值的默认设置是隐式设置的,并且在读取文档而不查询时可用。有没有一种方法可以确保在所有文档上都可以设置它,并且可以像“创建”日期属性一样找到它,还是必须手动在所有新文档上设置它?
答案 0 :(得分:1)
代替
readonly: {
type: Boolean,
default: false
}
尝试将''设置为false,这样将是:
readonly: {
type: Boolean,
default: 'false'
}
根据猫鼬documentation,猫鼬将以下值转换为false: