我正在使用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
作为键,如果不存在,则会抛出一条错误消息。
我在这里错过了什么吗?
答案 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 ...
})
找到工作示例