对值名称带有连字符的有效载荷进行 Joi 验证
Joi validation on payload where value name has a hyphen
正如标题中所说,我无法让 joi 验证对我的有效载荷中的一个值起作用,该值的名称中带有连字符。该值称为 'search-type'。我的验证看起来像这样
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
作为 -
将被解释为减法运算符。
正如标题中所说,我无法让 joi 验证对我的有效载荷中的一个值起作用,该值的名称中带有连字符。该值称为 'search-type'。我的验证看起来像这样
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
作为 -
将被解释为减法运算符。