NodeJS joi возвращает error = null, даже если ошибка должна произойти

Я запускаю NodeJS с joi и пытаюсь проверить объект конфигурации IBM Watson IoT. Это моя схема:

const schema = {
  body: {
    config: Joi.object().keys({
      org: Joi.string().required(),
      type: Joi.string().required(),
      id: Joi.string().required(),
      domain: Joi.string().required(),
      'auth-method': Joi.string().required(),
      'auth-token': Joi.string().required()
    }).required()
  }
};

А это мой чек:

Joi.validate(req.body, schema, { allowUnknown: true }, (err, value) => {
  console.log(err);
});

Это возвращает null как error, что указывает на отсутствие ошибки, но это даже в том случае, если я не POSTed какие-либо параметры для своего тела.

В основном я хочу убедиться, что body моего HTTP POST содержит действительный объект JSON, например:

config = {
    "org" : "organization",
    "id" : "deviceId",
    "domain": "internetofthings.ibmcloud.com",
    "type" : "deviceType",
    "auth-method" : "token",
    "auth-token" : "authToken"
};

person Alfred Balle    schedule 24.05.2018    source источник
comment
Вы используете err в аргументе при попытке напечатать error   -  person Arif Khan    schedule 24.05.2018
comment
Извините, опечатка здесь на SO. Исправил в вопросе.   -  person Alfred Balle    schedule 24.05.2018


Ответы (1)


Вы не передаете объект Joi функции проверки, вы должны передавать schema.body.config вместо schema. Если тело и конфигурация должны быть частью проверки, вы должны обернуть их Joi.Object так же, как вы сделали для всех ключей внутри конфигурации.

person FINDarkside    schedule 08.06.2018