zak*_*kir 29 validation node.js express joi
我得到一个后端数组,每个对象包含一个服务名称.结构如下所示
[{"serviceName":"service1"},
{"serviceName":"service2"},..]
Run Code Online (Sandbox Code Playgroud)
当我在后端获取数组时,我想验证数组中的每个对象都有serviceName属性.
我编写了以下代码,但即使我传递有效数组,我也会收到验证错误.
var Joi = require('joi');
var service = Joi.object().keys({
serviceName: Joi.string().required()
});
var services = Joi.array().ordered(service);
var test = Joi.validate([{serviceName:'service1'},{serviceName:'service2'}],services)
Run Code Online (Sandbox Code Playgroud)
对于上面的代码,我总是收到带有消息的验证错误
"value" at position 1 fails because array must contain at most 1 items
Run Code Online (Sandbox Code Playgroud)
zak*_*kir 73
更换订购的商品将有效.
let Joi = require('joi')
let service = Joi.object().keys({
serviceName: Joi.string().required(),
})
let services = Joi.array().items(service)
let test = Joi.validate(
[{ serviceName: 'service1' }, { serviceName: 'service2' }],
services,
)
Run Code Online (Sandbox Code Playgroud)
如需参考,请点击此处
小智 14
一个基本/更清晰的例子如下。要验证这样的 JSON 请求:
{
"data": [
{
"keyword":"test",
"country_code":"de",
"language":"de",
"depth":1
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是 Joi 验证:
seoPostBody: {
body: {
data: Joi.array()
.items({
keyword: Joi.string()
.required(),
country_code: Joi.string()
.required(),
language: Joi.string()
.required(),
depth: Joi.number()
.required(),
}),
},
};
Run Code Online (Sandbox Code Playgroud)
这是我在 NodeJs 中所做的,对于其他平台可能需要一些细微的更改
小智 8
const test = {
body: Joi.array()
.items({
x: Joi.string().required(),
y: Joi.string().required(),
z: Joi.string().required(),
date: Joi.string().required(),
})
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25299 次 |
| 最近记录: |