mongoose - 如何真正设置猫鼬默认值,尤其是。布尔值?
问题描述
我有以下架构:
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 命令将列出该文档。似乎布尔值的默认值是隐式设置的,并且在读取文档时可用,而不是查询。有没有办法确保它在所有文档上都设置并可以找到,就像“创建”日期属性一样,还是我必须手动在所有新文档上设置它?
解决方案
代替
readonly: {
type: Boolean,
default: false
}
尝试将 ' ' 设置为 false,因此它将是:
readonly: {
type: Boolean,
default: 'false'
}
根据 mongoose文档,mongoose 将以下值转换为 false:
- '错误的'
- 0
- '0'
- '不'
推荐阅读
- python - 如何比较两个长度不等的numpy数组
- python - 如何在 Azure 数据工厂中集成 Python 代码
- null - 与 where 相比,雪花在 select 中处理 null 不同
- vue.js - 如何将 v-model 与 vuex 和 vue 组合 api 一起使用?
- sql - 如何从字符串的开头删除数字和特殊字符?
- javascript - 检查 WebSocket 服务器是否可用且不出错
- web-scraping - 访问/查看网页上的表格
- javascript - 如何在 HTML 中指定内联 Javascript
- python-3.x - 文本到语音 sapi5 python 3.8.6
- php - 使用 Laravel 从 MySQL 中的 JSON 字符串中搜索值