【问题标题】:WARNING : unexpected return value : 'undefined' returned by 'custom' validator (ExpressJS)警告:意外的返回值:“自定义”验证器(ExpressJS)返回的“未定义”
【发布时间】:2017-12-21 03:05:46
【问题描述】:

我刚刚使用 ExpressJS 了解 NodeJS,现在我正在尝试使用 express-validator 了解自定义验证器。 我正在制作一个自定义验证器来检查用户名的可用性。但在控制台上它返回:

警告:意外返回值:“自定义”验证器返回“未定义”

但我看到我的编码,我确信没有任何错误。返回所有值,但自定义验证器似乎不再工作。

这是我的自定义验证器:

app.use(validator({
    customValidators : {
        cekUsername : function(value){
            sql = 'SELECT COUNT(username) as "username" from tbpengguna WHERE username='+mysql.escape(value)+';';
            koneksi.query(sql, function(e, rows, f){
                console.log(rows[0].username);
                return rows[0].username == 0;
            }); 
        }
    }
}));

【问题讨论】:

    标签: node.js validation express


    【解决方案1】:

    这个错误是意料之中的,因为你没有为你的验证器函数返回任何东西,你只在回调函数内部返回。

    解决方案是返回一个 Promise,该 Promise 将在 Promise 解决时返回布尔值。

    【讨论】:

    • 谢谢...我现在使用 Promise 工作。但是在 express-validator 自述文件中,我没有看到它使用承诺来制作自定义验证器。我刚刚读到有关 Promise 的消息。我邀请它必须使用承诺,因为它是异步过程(koneksi.query 方法)。我说的对吗?
    • 是的。 express-validator,也可以使用 Promise github.com/ctavan/express-validator/issues/318
    • 感谢您的链接。我真的错过了太多东西:D
    猜你喜欢
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    相关资源
    最近更新 更多