【问题标题】:express-validator on PUT methodsPUT 方法的 express-validator
【发布时间】:2021-12-07 17:25:11
【问题描述】:

我正在创建一个 API 并决定使用 express-validator 进行验证(废话),我以前从未使用过它,所以我不确定它的某些方面,所以我的验证可能不是最好的,但我我过去了。

我已经使用它构建了两个验证中间件,并将它们从同一个文件夹中导出,如下所示:

module.exports = {
  create: require('./create'),
  update: require('./update')
}

所以我可以在我的路由器中执行此操作:

const validation = require('../validations/plotValidation')

// ...

router.get('/', controller.all)
router.post('/create', validation.create(), controller.create)
router.get('/:plotId', controller.read)
router.put('/:plotId/update', validation.update(), controller.update)
router.delete('/:plotId/delete', controller.delete)

// ...

我对 express-validator 不够好,无法使用同一个文件验证两条路线,也许我会在某个时候尝试一下。

.post 方法可以正常工作并验证我想要的所有内容,但是 .put 方法似乎忽略了这里的每个检查都是文件,以防您想查看检查:

const { body, check, param } = require('express-validator');

module.exports = () => {
  return [
    param('plotId')
      .exists().withMessage('URI requires plot id'),

    body('price')
      .optional()
      .isObject()
  ]
}

正如您可能知道的那样,我只是说出来了,但即使只有这两个微小的检查,它似乎也没有运行。

express-validator 对 PUT 方法不起作用吗?

【问题讨论】:

    标签: express express-validator


    【解决方案1】:

    对于遇到此问题的其他人,我在支票上使用.run 解决了这个问题,您可以阅读更多关于此here 的信息,基本上这是拯救我的代码:

    // parallel processing
    const validate = validations => {
      return async (req, res, next) => {
        await Promise.all(validations.map(validation => validation.run(req)));
    
        const errors = validationResult(req);
        if (errors.isEmpty()) {
          return next();
        }
    
        res.status(400).json({ errors: errors.array() });
      };
    };

    【讨论】:

      猜你喜欢
      • 2019-07-17
      • 2017-03-08
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 2013-07-11
      • 2021-08-20
      相关资源
      最近更新 更多