我有一个像这样的joi模式
const userModel = Joi.object({
id: Joi.string().min(3).max(50),
username: Joi.string().min(10).max(100)
... other 10 properties
})
问题是我想获取
之类的所有键的值 ["id","username",...]
我尝试使用Object.keys(userModel),但是返回的是意外值,例如
[
"isJoi",
"_currentJoi",
"_type",
"_settings",
"_baseType",
"_valids",
"_invalids",
"_tests",
"_refs",
"_flags",
"_description",
"_unit",
"_notes",
"_tags",
"_examples",
"_meta",
"_inner"
]
答案 0 :(得分:1)
类似的事情可能会有所帮助。
const userModel = Joi.object({
id: Joi.string().min(3).max(50),
username: Joi.string().min(10).max(100)
})
const keys = [];
for (var i of userModel._ids._byKey.entries()){
keys.push(i[0])
}
console.log(keys);
答案 1 :(得分:1)
发生意外行为的原因是由于userModel不是普通对象,而是joi对象。
一个可能的解决方案是检查userModel._ids._byKey.keys()
以获得模式中所有键的Map迭代器。该解决方案的问题在于您依靠Joi框架的内部。
我可能会建议另一种方法:在单独的数据结构(数组或对象)中提取必填字段,并基于此扩展Joi模式。