问题描述
我目前正在尝试使用joi软件包设置验证,但是我遇到了一些很可能与语法有关的问题。
我建立的模式是一个相当简单的模式,它检查数字是否有效和/或数据库中是否存在ID。
export default router.post('/',async function(req,res,next) {
const Joi = require('joi');
// for testing
if (!Object.keys(req.body).length) {
req.body = {'tId':'123456789'}
}
const data = req.body;
const schema = Joi.object().keys({
tId: Joi.string.tId.required()
});
Joi.validate(data,schema,(err,value) => {
if(err){
res.status(404).json({
status: 'error',message: 'tId not found',data: data
});
} else {
res.json({
status: 'success',message: 'Person found',data: Object.assign(22,value)
});
}
});
})
我目前遇到的错误是tId: Joi.string.tId.required()
。
UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“ required”
我目前的研究主要围绕以下链接:
https://www.digitalocean.com/community/tutorials/how-to-use-joi-for-node-api-schema-validation
我试图模仿本教程中实现的概念,我认为我对它的工作原理有些了解,但是我在使用库语法时遇到了一些麻烦。
充分利用joi库的任何链接,视频,项目等都将非常有帮助。
解决方法
您猜到了,这只是语法错误。更新此部分:
const schema = Joi.object().keys({
tId: Joi.string().required()
});
从Joi.validate
开始,我假设您是Joi v15或更低版本,以下是您正在寻找的文档-
https://joi.dev/api/?v=15.1.1#string---inherits-from-any