Express Schema Validation确定有效负载结构

时间:2019-07-10 20:32:22

标签: express express-validator

我正在使用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 :(得分:0)

您可以使用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

找到工作示例