Node.js expressjsapi将插入数据保留到DB eventhough Req中';t通过验证

Node.js expressjsapi将插入数据保留到DB eventhough Req中';t通过验证,node.js,express,Node.js,Express,我使用ExpressJS构建的API已经成功地在db中创建了数据,但是我的API仍然在db中创建数据,尽管req没有通过验证。 这是我的控制器: module.exports = { validate: function (method){ switch (method) { case 'personalInfo': { return [ body('email').not()

我使用ExpressJS构建的API已经成功地在db中创建了数据,但是我的API仍然在db中创建数据,尽管req没有通过验证。 这是我的控制器:

module.exports = {
    validate: function (method){
        switch (method) {
            case 'personalInfo': {
                return [
                    body('email').not().isEmpty().isEmail().normalizeEmail().withMessage('Your email is not valid')
                ]
            }
        }
    },

    createNewPersonalData: function (req, res) {
        const errors = validationResult(req).formatWith(utils.validationFound);
        if(!errors.isEmpty()){

            res.status(300).json(errors.array());
        }

        var name = req.body.name,
            email = req.body.email;

        PersonalInfo.create({
            name : name,
            email : email
        })
            .then(Personal_Info => {
                res.json({
                    'status': 'OK',
                    'messages': 'Personal Info Created',
                    'data': Personal_Info
                })
            });
    }
}
如果我发送请求,例如:

{
   "name": "John",
   "email": "john"
}
API应按如下方式发送响应:

{
    "message": "Your email is not valid",
    "param": "email",     
}
我的问题是API不断地将数据创建到db event中,尽管像上面的例子一样有req和res


谢谢

您需要
返回
以停止进一步执行

if(!errors.isEmpty()) {
    return res.status(300).json(errors.array());
}

您需要
返回
以停止进一步执行

if(!errors.isEmpty()) {
    return res.status(300).json(errors.array());
}

您应该将create调用包装在else块中

createNewPersonalData: function (req, res) {
        const errors = validationResult(req).formatWith(utils.validationFound);
        if(!errors.isEmpty()){

            res.status(300).json(errors.array());
        } else {

        var name = req.body.name,
            email = req.body.email;

        PersonalInfo.create({
            name : name,
            email : email
        })
            .then(Personal_Info => {
                res.json({
                    'status': 'OK',
                    'messages': 'Personal Info Created',
                    'data': Personal_Info
                })
            });
        }
    }

您应该将create调用包装在else块中

createNewPersonalData: function (req, res) {
        const errors = validationResult(req).formatWith(utils.validationFound);
        if(!errors.isEmpty()){

            res.status(300).json(errors.array());
        } else {

        var name = req.body.name,
            email = req.body.email;

        PersonalInfo.create({
            name : name,
            email : email
        })
            .then(Personal_Info => {
                res.json({
                    'status': 'OK',
                    'messages': 'Personal Info Created',
                    'data': Personal_Info
                })
            });
        }
    }

谢谢,这是工作。但是在发送回复时使用return是可以的吗?谢谢,这是工作。但在发送响应时使用return可以吗?