Hapi Joi验证有效载荷可以是一个对象数组,也可以只是一个简单的Javascript对象?

Hapi Joi验证有效载荷可以是一个对象数组,也可以只是一个简单的Javascript对象?,javascript,node.js,hapijs,joi,Javascript,Node.js,Hapijs,Joi,我有一个post调用,它可以将负载作为单个JS对象以及对象数组保存到db。如何编写一个模式来针对这样的负载进行验证 JS对象 { label: 'label', key: 'key', help_text: 'text' } 或 您可以使用。以下是一个工作示例: const joi = require('joi'); var objectSchema = joi.object().keys({ label: joi.string().required(), key

我有一个post调用,它可以将负载作为单个
JS
对象以及对象数组保存到db。如何编写一个模式来针对这样的负载进行验证

JS对象

{
  label: 'label',
  key: 'key',
  help_text: 'text'
}


您可以使用。以下是一个工作示例:

const joi = require('joi');

var objectSchema = joi.object().keys({
    label: joi.string().required(),
    key: joi.string().required(),
    help_text: joi.string().required()
}).unknown(false);

var arraySchema = joi.array().items(objectSchema);

var altSchema = joi.alternatives().try(objectSchema, arraySchema);

var objTest = {label: 'cuthbert', key: 'something', help_text: 'helping!'};

var arrTest = [
    objTest
];

var failingArrTest = [
    {
        unknownProperty: 'Jake'
    }
];

var result = joi.validate(objTest, altSchema);

var resultArrTest = joi.validate(arrTest, altSchema);

var resultFailingArrTest = joi.validate(failingArrTest, altSchema);

console.log(result);

console.log(resultArrTest);

console.log(resultFailingArrTest);

您可以使用。以下是一个工作示例:

const joi = require('joi');

var objectSchema = joi.object().keys({
    label: joi.string().required(),
    key: joi.string().required(),
    help_text: joi.string().required()
}).unknown(false);

var arraySchema = joi.array().items(objectSchema);

var altSchema = joi.alternatives().try(objectSchema, arraySchema);

var objTest = {label: 'cuthbert', key: 'something', help_text: 'helping!'};

var arrTest = [
    objTest
];

var failingArrTest = [
    {
        unknownProperty: 'Jake'
    }
];

var result = joi.validate(objTest, altSchema);

var resultArrTest = joi.validate(arrTest, altSchema);

var resultFailingArrTest = joi.validate(failingArrTest, altSchema);

console.log(result);

console.log(resultArrTest);

console.log(resultFailingArrTest);

首先从JSON解析它
JSON.parse(jsObj)
;然后检查它是数组还是对象。小心,数组也是一个对象。对于阵列,您可以使用原型:
array.isArray(arr)
;对于对象,可以使用以下内容:
value!==null&&(typeof值=='undefined'?'undefined':_typeof(值))==='object'谢谢@DominikNoll我的处理程序中已经有了这个逻辑我正在将所有验证部分分离到单独的文件中,然后在config object.Mh中定义路由时进行验证,我不明白你的问题。。。你想知道如何命名路线吗?或者您想知道如何在函数中处理JS对象@kailash Yogeshwar首先从JSON解析它
JSON.parse(jsObj)
;然后检查它是数组还是对象。小心,数组也是一个对象。对于阵列,您可以使用原型:
array.isArray(arr)
;对于对象,可以使用以下内容:
value!==null&&(typeof值=='undefined'?'undefined':_typeof(值))==='object'谢谢@DominikNoll我的处理程序中已经有了这个逻辑我正在将所有验证部分分离到单独的文件中,然后在config object.Mh中定义路由时进行验证,我不明白你的问题。。。你想知道如何命名路线吗?或者您想知道如何在函数中处理JS对象@kailash yogeshwari会先测试我会先测试