node.js - 如何使用 mongoose 和 mongodb 添加必填字段?
问题描述
假设我有一个现有的架构:
var OrderSchema = new Schema({
field1: {type: String, required; true},
})
但我想在此模式中添加另一个field2
类型Boolean
为 的字段并使其成为必需。我还希望所有现有文档的field2
值都设置为false
. 如何使用节点服务器和猫鼬来做到这一点?
我在想我可能能够拥有一个预启动脚本,将所有现有文档设置field2
为 false,这样所有现有文档都将具有该字段,并且任何新文档都需要field2
在保存时设置,因为架构将在服务器启动时更新。这种东西有标准做法吗?
我不是在问如何在猫鼬模式中创建默认字段。我在问如何确保以前的文档具有默认和必填字段,以及人们通常如何在集合中填充以前的文档。请不要标记为重复。
@Fanpark,这些问题都没有回答我的问题。请删除它们。
解决方案
var OrderSchema = new Schema({
field1: {type: String, required: true},
field2: {
type: Boolean,
default: false,
required: true
}
})
这将在使用 .save 创建对象时将 field2 添加为 false,但不会修改旧文档。另一方面,如果字段不存在,方法 .find 将添加该字段并将其设置为 false (仅在查询的结果中,不会更新文档)
推荐阅读
- css - 更改下拉语义 UI 中的元素文本
- javascript - 如何将使用 javascript 的动画限制为特定的屏幕尺寸?
- html - 如何移动此下拉菜单箭头 - HTML/CSS
- php - 如何在php中将“key”和“value”添加到json/array Rest Api
- sql - 减去两个不同的时间戳并在 Oracle 中转换为分钟?
- typescript - 使用 JSX 包从基本 CLI 安装 Vue.js 以使用 TypeScript 呈现 JSX
- r - kableExtra in for - 循环
- sublimetext - Sublime Text 3 插件 HTML 弹出窗口渲染
- google-chrome - Google Chrome Inspector 的图像大小是什么意思?
- python - Python字典排序列表