mysql - 自定义快速验证器

标签 mysql node.js express express-validator

我的自定义验证器总是返回 true,尽管当结果不是未定义并且我在这种情况下返回 false

const validatorOptions = {
customValidators: {
    not_exist: (inputParam) => {
        let qry = 'select * from  Users where email = ?';
        let exist= db.query(qry, inputParam, (err, result) => {
            if (err)
                throw err;
            if (result) {
                console.log("Exist");
                return false;
            } else
                return true;
        });
        return exist;

    }
}

};

我尝试使用Promise,但仍然不起作用。

const validatorOptions = {
customValidators: {
    isUniqueEmail: (email) => {
        function getRecord(email) {
            return new Promise(function(resolve, reject) {
                let qry = 'select * from  Users where email = ?';
                db.query(qry, email, (err, result) => {
                    if (err)
                        reject(err);
                    else {
                        resolve(result);
                    }

                });
            });
        };
        getRecord(email).then(function(res) {
            return (res.length == 0);
        }).catch((err) => { throw err; });;

    }
}

};

req.checkBody('email', 'Email already exist').isUniqueEmail();

最佳答案

这是因为您返回的变量exist等于db.query()(并且始终是truthy值) .

我对此代码有一些疑问(因为我不知道它如何在当前状态下运行):

  • customValidators 作为 validatorOptions 的子项似乎很奇怪,这有什么原因吗?
  • 您混合使用 Camel 箱和蛇箱有什么原因吗?
  • 您认为自定义验证器方法名称是否可以更准确地描述其用途,例如 isUn​​iqueEmailAddress
  • 为什么 SQL 语句不将参数连接到
  • 出于安全原因,您认为这段代码应该实现一些 SQL 输入清理吗?
  • db.query() 真的需要 3 个参数吗??? (我认为它只需要 SQL 和回调)
  • 由于 db.query() 正在执行异步操作,您是否考虑过使用 Promises?

关于mysql - 自定义快速验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51448525/

相关文章:

javascript - 在输入类型 = 文件中没有选择文件的情况下提交表单超时

javascript - 我无法从 mongodb 检索值,即使它存在

javascript - 错误 : ENOENT: no such file or directory with Angular2 and Express. js

node.js - 在 ExpressJS 下检测 HTTPS 仅适用于 4 种方法中的 1 种

javascript - 在 Mongoose 中对子文档进行排序

android - 移动应用不需要 CORS?

PHP:在从另一个表获取数据时更新产品表数量

php - Magento:Paypal 将送货地址作为默认地址,而不是帐单地址

php - 如何避免 mysql 查询中出现很多 OR 语句?

mysql - 有什么可能的方法来重写此查询以获得最佳性能吗?