Экспресс-проверка схемы для определения структуры полезной нагрузки - PullRequest
0 голосов
/ 10 июля 2019

Я использую express-validator, чтобы определить, находится ли получаемый груз в правильной структуре (схеме). В основном я хочу убедиться, что свойства объекта существуют и что данные имеют правильный тип.

Я пытался реализовать простую версию этого, но, похоже, он проходит эту проверку, хотя моя полезная нагрузка не соответствует определенной схеме.

 // Payload body

{
    "topic1": "data-ingest",
    "data1": {
        "fName": "Bob",
        "lName": "Jones",
    },
    "blah": "no"
}



/**
    * Receive a payload
    */
app.post('/payload', checkSchema({
    topic: {
        in: ['body'],
        exists: {
            errorMessage: 'Missing Topic'
        }
    }
}),
(req, res) => {
    ... Normal Stuff ...
})

В этом случае я ожидаю, что моя полезная нагрузка будет содержать topic в качестве ключа, и выдает сообщение об ошибке, если его там нет.

Я что-то здесь упускаю?

1 Ответ

0 голосов
/ 11 июля 2019

Вы можете использовать Joi для проверки схемы.https://github.com/hapijs/joi

Приведенный выше код с joi будет выглядеть так:

Обновленный ответ


const Joi = require("@hapi/joi");

const schema = Joi.object().keys({
  topic: Joi.string().required(),
  data: Joi.object()
    .unknown(true)
    .required(),
  blah: Joi.string()
});


/**
    * Receive a payload
    */
app.post('/payload', (req, res) => {
const result = schema.validate(req.body);

if(result.error){
//process the error
}
    ... Normal Stuff ...
})

Рабочий пример можно найти по адресу https://runkit.com/ns23/express-schema-validation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...