node.js - 值名称带有连字符的有效负载上的 Joi 验证
问题描述
正如标题中所说,我无法让 joi 验证处理我的有效负载中的值,其名称中带有连字符。该值称为“搜索类型”。我的验证看起来像这样
options: {
validate: {
payload: joi.object({
value1: joi.string().required(),
value2: joi.string().required(),
search-type: joi.string().required()
}),
failAction: (request, h, err) => {
return h.redirect('/search').takeover()
}
}
}
我试过像这样把名字放在方括号里
options: {
validate: {
payload: joi.object({
value1: joi.string().required(),
value2: joi.string().required(),
searchType:['search-type'] joi.string().required()
}),
failAction: (request, h, err) => {
return h.redirect('/search').takeover()
}
}
}
但是'joi'。在它在 linting 中标记并说“joi”之后。是一个意外的令牌?
解决方案
采用
options: {
validate: {
payload: joi.object({
value1: joi.string().required(),
value2: joi.string().required(),
'search-type': joi.string().required()
}),
failAction: (request, h, err) => {
return h.redirect('/search').takeover()
}
}
}
由于这是 Joi,我猜你不需要在其他任何地方访问该属性,但你会这样做,options.validate['search-type']
而不是options.validate.search-type
因为-
将被解释为减法运算符。
推荐阅读
- android - Android 服务:检测数据连接是否可用 Wifi 或移动数据
- android - Realm 5.8.0在Android下导致dex错误
- jenkins - 将整个 Jenkins 阶段提取到共享库?
- c++ - 使用赋值运算符 =? 时 C++ 中的编译错误
- shell - UNIX ls -l 日期格式不同
- elasticsearch - 如何使一个发现表链接到仪表板或其他地方的另一个发现表?
- vector - 目标C中的点向量是什么类型
- python - 在给定行号的文本文件中打印行
- javascript - 如何向这个 mansory 网格添加固定宽度
- mongodb - MongoDB - 连接长时间没有断开