Mongoose似乎默认为所有字段都不是必需的。是否有任何方法可以使所有字段都是必需的,而不更改以下各项:
Dimension = mongoose.Schema(
name: String
value: String
)
字符串
至
Dimension = mongoose.Schema(
name:
type: String
required: true
value:
type: String
required: true
)
型
因为我有很多这样的东西所以会很难看的。
8条答案
按热度按时间col17t5w1#
你可以这样做:
字符串
或者对于所有属性(使用下划线,这很棒):
型
efzxgjgh2#
我最终做到了这一点:
字符串
而对于其他数据类型则为ON。
yhuiod9q3#
所有字段属性的格式为
schema.paths[attribute]
或schema.path(attribute)
;一个正确的方法:定义何时不需要字段,
字符串
并将它们设置为默认必填项:
型
下划线方式:
型
测试一下:
型
kzipqqlq4#
你可以写一个mongoose模式插件函数,遍历模式对象并调整它,使每个字段都是必需的。然后你只需要每个模式一行:
Dimension.plugin(allRequired)
的。of1yzvn45#
Mongoose没有提供设置所有字段的方法,但是您可以递归地完成它。
就像Peter提到的,你可以将它插件化,以便重用代码。
递归设置:
字符串
插件化:
型
ghhaqwfi6#
我不确定在Mongoose中是否有更简单的方法,但我会在您的IDE/编辑器中执行以下操作:
像往常一样列出您的字段:
字符串
然后在
String
上执行查找和替换,并将其替换为{type: String, required: true},
。型
然后对
Number
和其他类型执行相同的操作。13z8s7eq7#
在前面的答案的基础上,下面的模块将默认为必填字段。前面的答案没有递归嵌套对象/数组。
使用方法:
字符串
节点模块:
型
ckx4rj1h8#
我为你可能拥有的复杂类型创建了这个函数,这样你就不必为你拥有的每个类型声明一个新变量。
字符串
要使用它,您只需执行以下操作:
型
这样更简洁,也更容易解释。