我有一个post调用,它可以将有效负载作为单个JS
对象以及对象数组保存到db。如何编写模式以验证此类有效负载?
JS对象
{
label: 'label',
key: 'key',
help_text: 'text'
}
或者
[
{
label: 'label1',
key: 'key1',
help_text:'text1'
},
{
label: 'label2',
key: 'key2',
help_text:'text2'
}
]
答案 0 :(得分:5)
您可以使用destroying the session完成此操作。这是一个有效的例子:
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);