【发布时间】:2019-08-30 19:19:51
【问题描述】:
我有 1 条路线,2 种不同的 joi 模式,我希望能够根据有效负载中的字段动态选择我使用的模式。
“一条路线,2 种模式(Hapi.js 与 Joi)”
因此,对于上下文,我有一条 hapi 路线,并且正在使用 joi 验证“someSchema” hapiRoute.js:
...
"validate": {
"payload": someSchema
}
...
在 schema.js 中:
function ChooseSchema(schemaA, schemaB) {
return Joi.when(Joi.ref("payload.data.attributes.someField"), {
"is": Joi.string().valid("fieldIsValue"),
"then": schemaA,
"otherwise": schemaB
});
}
module.exports = {
"someSchema": ChooseSchema(schemaA, schemaB)
}
schemaA 和 schemaB 的不同之处
因此,如果“someField”等于一个值:“fieldIsValue”,我将尝试使用“schemaA”,否则使用 schemaB。 目前它没有得到这个值“someField”,所以我相信只是返回 schemaB
【问题讨论】:
-
为什么需要两个模式?
-
由于需要对 2 个不同的用户进行不同的验证
-
更新:我相信,一旦有效载荷验证在技术上已经开始(至少从 hapi.js 的角度来看),我就试图选择架构。这显然是不允许的
标签: javascript hapijs joi