[英]When using Joi with Hapi, how does one setup a require on one key but allow any and all other keys?
我正在尝试为进入Hapi处理程序的JSON对象编写Joi验证。 到目前为止代码看起来像这样:
server.route({
method: 'POST',
path: '/converge',
handler: function (request, reply) {
consociator.consociate(request.payload)
.then (function (result) {
reply (200, result);
});
},
config: {
validate: {
payload: {
value: Joi.object().required().keys({ knownid: Joi.object() })
}
}
}
});
到目前为止,您可以在上面的config:validate:code部分中看到Joi对象验证。 进入的JSON看起来像这样。
"key": '06e5140d-fa4e-4758-8d9d-e707bd19880d-testA',
"value": {
"ids_lot_args": {
"this_id": "stuff",
"otherThign": "more data"
},
"peripheral_data": 'Sample peripheral data of any sort'
}
在上面的JSON中,需要对象根目录的键和值,并且需要名为ids_lot_args
的部分。 以peripheral_data开头的部分可以在那里,也可以是任何其他JSON有效负载。 没关系,只需要根级别的键和值以及值内的ids_lot_args
。
到目前为止,我在试图让Joi验证工作时遇到了磕磕绊绊。 有关如何设置的任何想法? Joi的代码仓库位于https://github.com/hapijs/joi,如果想要查看它。 到目前为止,我一直在尝试允许对象上的所有函数无效。
您只需要在value
对象上调用unknown()
函数:
var schema = Joi.object({
key: Joi.string().required(),
value: Joi.object({
ids_lot_args: Joi.object().required()
}).unknown().required()
});
您可以使用“allowUnknown”参数:
validate : {
options : {
allowUnknown: true
},
headers : {
...
},
params : {
...
},
payload : {
...
}
}
}
尝试使用Joi.any()
server.route({
method: 'POST',
path: '/converge',
handler: function (request, reply) {
consociator.consociate(request.payload)
.then (function (result) {
reply (200, result);
});
},
config: {
validate: {
payload: {
key: Joi.string().required(),
value: Joi.object({
ids_lot_args: Joi.object().required(),
peripheral_data: Joi.any()
})
}
}
}});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.