【问题标题】:How do I add a required field using mongoose and mongodb? [duplicate]如何使用 mongoose 和 mongodb 添加必填字段? [复制]
【发布时间】:2019-05-26 15:44:58
【问题描述】:

假设我有一个现有的架构:

var OrderSchema = new Schema({
    field1: {type: String, required; true},
})

但我想向此架构添加另一个字段 field2 类型为 Boolean 并使其成为必需。我还希望所有现有文档都将field2 值设置为false。如何使用节点服务器和猫鼬来做到这一点?

我在想我可以有一个预启动脚本,将所有现有文档的field2 设置为 false,这样所有现有文档都将具有该字段,并且任何新文档都需要具有field2 在保存时设置,因为架构将在服务器启动时更新。这种东西有标准做法吗?

我不是在问如何在猫鼬模式中创建默认字段。我在问如何确保以前的文档具有默认和必填字段,以及人们通常如何在集合中填充以前的文档。请不要标记为重复。

@Fanpark,这些问题都没有回答我的问题。请删除它们。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:
    var OrderSchema = new Schema({
        field1: {type: String, required: true},
        field2: {
            type: Boolean,
            default: false,
            required: true
        }
    })
    

    这将在使用 .save 创建对象时将 field2 添加为 false,但不会修改旧文档。另一方面,.find 方法将添加该字段,如果它不存在并将其设置为 false(仅在查询的结果中,不会更新文档)

    【讨论】:

    • 哦,真的吗?它会在查询结果中这样做吗?这就是人们通常在 mongodb 中“添加列”的方式吗?仅仅依靠 ORM 来回填?
    • MongoDB 没有像所有 noSQL 数据库那样强大的 shema 结构,所以可以这样做。
    • 这是标准做法吗?
    • 这就是猫鼬的工作原理
    • 我明白了!但问题是,对于那些使用猫鼬的人来说,这是标准做法吗? IE。这是在猫鼬工作方式范围内发生在现实世界中的常见做法吗?我敢肯定还有其他人会做不同的事情:)
    猜你喜欢
    • 1970-01-01
    • 2023-02-14
    • 2012-12-30
    • 2013-11-14
    • 1970-01-01
    • 2019-10-19
    • 2017-10-31
    • 2017-06-17
    • 1970-01-01
    相关资源
    最近更新 更多