【发布时间】:2015-10-29 10:50:15
【问题描述】:
我有一个包含可以存储任何内容的字段的架构:new Schema({settings : {}})。
我有一个数据库 我想保留这种添加数据而不添加新字段的能力,但是对于某些字段,如果它们不存在,则它们具有默认值。
我可以做到以下几点:
new Schema({
settings : {
key : { type : String, default: "abc" }
// I want to be able to add data that contains more than just "key"
}
});
我只是想确保在从该架构请求数据时,我仍将获得 所有 数据,而不仅仅是明确定义的键?
它似乎有效,但我想确保我仍然可以:
读取所有数据
仍然写入任意数据(即不一定在架构中定义)
是否有关于 mongo/mongoose 的规则会阻止我做这两件事中的一件(我对写作部分非常不确定)?如果有这样的“功能”,怎么办?
注意:我看到了this question。如果我错了,请纠正我,但这些字段不是隐式的(就像{} 的第一种情况一样),必须定义(实际上是相反的问题)。
编辑:我现在还看到了this question,它解决了我的顾虑(即使接受的解决方案听起来更像是一种解决方法)。但在我的情况下,我已经存储了数据,因此(1 - 禁用严格)意味着编写大量验证代码以确保安全(因为有很多密钥,这是应用程序的最大集合),以及(2 - 混合模式) 将需要迁移此特定子元素的数据...简而言之:我仍然欢迎解决我的特定问题。
【问题讨论】:
-
禁用
strict是一个选项吗? -
@robertklep 原样(这个集合是我们数据库的中心点),它会有非常风险(这个集合有很多fields.subfields,并且是链接到几乎所有其他集合)。