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

时间:2017-01-09 07:35:26

标签: javascript node.js hapijs joi

我有一个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'
 }
 ]

1 个答案:

答案 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);