Express Validator 主体不起作用

Express Validator body not function

我正在使用 express-validator 版本 6.11.1 验证来自 API 调用的数据输入,每次我使用 check 或 body 进行验证时,我都会收到以下错误:

TypeError: body(...).not(...).IsEmpty 不是函数

我使用下面的代码创建了一个名为 validator.js 的助手

const { body, validationResult } = require('express-validator')
const bcrypt = require('bcrypt')

const signupValidation = () => {
    return [
        body('firstname')
            .not().IsEmpty().withMessage('Firstname field is required'),
        body('lastname')
            .not().IsEmpty().withMessage('Lastname field is required')
    ]
}

const validate = (req, res, next) => {
    const errors = validationResult(req)
    if (errors.isEmpty()) {
        return next()
    }
    const extractedErrors = []
    errors.array().map(err => extractedErrors.push({ msg: err.msg }))

    res.status(200).json({
        statusCode: 422,
        error: extractedErrors
    })
}

module.exports = {
    signupValidation,
    validate
}

我调用的路由看起来像

const { signupValidation, validate } = require('../../helpers/validator')

//Endpoint to create new merchant
router.post('/account/create-merchant', signupValidation(), validate, async (req, res) => {
    res.status(200).json({ 
        statusCode: 201,
        message: req.body
    })
})

示例数据来自 API

{
    "firstname": "",
    "lastname": "Jon",
    "phone" : "*****",
    "email" : "oayayayaya",
    "password": "******"
}

能否指导我如何解决错误消息(TypeError:body(...).not(...).IsEmpty 不是函数)

我认为应该是 isEmpty() 而不是 IsEmpty(),试试这个:

const signupValidation = () => {
    return [
        body('firstname')
            .not().isEmpty().withMessage('Firstname field is required'),
        body('lastname')
            .not().isEmpty().withMessage('Lastname field is required')
    ]
}

查看文档here