在使用Joi和Hapi时,如何在一个键上设置一个要求,而允许任何和所有其他键?
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
。
您只需要在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 : {
...
}
}
}
尝试使用join .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()
})
}
}
}});
相关文章:
- 有任何可能将facebook实时信使整合到一个网站中
- 在任何AJAX调用之前触发一个javascript函数
- 如何创建一个包含许多数组和数据的json对象
- 将任何CDN配置为只传递一个文件,无论请求的url是什么
- 编写一个序列,在任何地方都没有 0
- 在scala或scalajs Diode中,现有类型中的任何一种都符合“;更新一个没有'还不存在”;
- javascript测试是否存在两个标志中的任何一个
- 尝试添加一个选项以使用append进行选择,但没有任何结果
- jQuery toogle-一个打开,另一个隐藏-在代码中的任何位置
- 如何在谷歌地图中突出显示一个州点击一个国家的任何区域
- 在离子2中,有任何方法可以将涡旋动量作为一个事件来检测
- 任何编写文本文件并将其替换为上一个文本文件的方法
- 有没有任何情况下,一个方法不应该是原型方法
- 我想遍历一个对象数组,我不想要任何重复项
- 如果我只想从数组中打印任何一个元素.任何数组.那么代码会是什么
- 如何通过点击“”来获得另一个没有任何文本的重复表单;下一个“;按钮,在javascript中
- 我可以orderByChildren或orderByValue减去一个孩子到另一个?(或任何其他使用计算变量的方法)
- HTML5音频的多个实例-我只需要一个在任何时候播放
- 我如何编写一个Bundle ?任何给定库的CdnFallbackExpression
- 点击锚点,如何定位一个没有任何ULs的LI