Как я могу проверить, является ли значение объекта или массива объектов через Джой - PullRequest
0 голосов
/ 14 февраля 2020

Моим телом запроса может быть один 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"
}
]

Я хочу проверить эти случаи с помощью праздновать / Джой

export const Create = celebrate({
    [ Segments.BODY ]: Joi.any() // how can I handle them here
});

1 Ответ

1 голос
/ 14 февраля 2020

Как определить, является ли элемент массивом или объектом, используя vanilla JavaScript:

    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
...