javascript - 如何通过 Joi 检查值是对象还是对象数组
问题描述
我的请求正文可以是单个 JSON 对象或 JSON 对象数组:
单个 JSON 对象
{
"name" : "item 1",
"description" : "item 1 description"
}
JSON 对象数组
[{
"name" : "item 1",
"description" : "item 1 description"
}, {
"name" : "item 2",
"description" : "item 2 description"
}
]
我想通过celebrate/Joi来验证这些案例
export const Create = celebrate({
[ Segments.BODY ]: Joi.any() // how can I handle them here
});
解决方案
如何使用 vanilla JavaScript 判断 item 是数组还是对象:
const arrayOrObject = (item) => {
if (item instanceof Array) return ‘array’;
else if (item instanceof Object) return ‘object’;
return null;
}
类似的“数组或对象”测试使用Joi
:
const Joi = require('@hapi/joi');
const isArray = (item) => !Joi.array().validate(item).error;
const isObject = (item) => !Joi.object().validate(item).error;
let arr = [1,2,3];
console.log(isArray(arr)); // true
console.log(isObject(arr)); // false
obj = {foo: "bar"};
console.log(isArray(obj)); // false
console.log(isObject(obj)); // true
推荐阅读
- oracle - 如何在 hive 中实现 regexp_substr?
- python - Scipy 拟合曲线的点
- vue.js - 如何使 vue 3 静音?
- typescript - 从用 TypeScript 编写的 Webpack 插件创建附加资产
- tarantool - 如何返回带有 SELECT() 元组的表?
- javascript - 范围过滤对象数组内
- selenium-webdriver - Robotframework - seleniumlibrary 和 Internet Explorer 的问题
- sql - 如何检索所有行取决于 ORACLE SQL 中的一个 emp_id?
- java - 查找嵌套 XML 标记的索引
- java - ArrayList 重复数据删除问题