如何使用 joi 设置正确的模式和验证?
How to set up a proper schema and validation using joi?
我目前正在尝试使用 joi 包设置验证,但我 运行 遇到了一些很可能与语法有关的问题。
我设置的模式非常简单,它会检查一个数字是否有效and/or 如果数据库中存在该 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'
我目前的研究主要围绕以下 link:
https://www.digitalocean.com/community/tutorials/how-to-use-joi-for-node-api-schema-validation
我试图模仿本教程实现的概念,我认为我对它的工作原理有一定的了解,但我只是在使用库的语法时遇到了一些问题。
任何 link 充分利用 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
我目前正在尝试使用 joi 包设置验证,但我 运行 遇到了一些很可能与语法有关的问题。
我设置的模式非常简单,它会检查一个数字是否有效and/or 如果数据库中存在该 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'
我目前的研究主要围绕以下 link:
https://www.digitalocean.com/community/tutorials/how-to-use-joi-for-node-api-schema-validation
我试图模仿本教程实现的概念,我认为我对它的工作原理有一定的了解,但我只是在使用库的语法时遇到了一些问题。
任何 link 充分利用 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