【问题标题】:How to set up a proper schema and validation using joi?如何使用 joi 设置正确的模式和验证?
【发布时间】:2020-10-09 20:43:30
【问题描述】:

我目前正在尝试使用 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: Cannot read property 'required' of undefined

我目前的研究主要围绕以下链接:

https://www.digitalocean.com/community/tutorials/how-to-use-joi-for-node-api-schema-validation

我试图模仿本教程实现的概念,并且我认为我对它的工作原理有一定的了解,但我只是在库的语法上遇到了一些问题。

任何能充分利用 joi 库的链接、视频、项目等都会非常有帮助。

【问题讨论】:

    标签: javascript node.js express joi


    【解决方案1】:

    如您所料,这只是语法错误。更新这部分:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 2021-02-11
      • 1970-01-01
      • 2021-04-20
      • 2021-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多