2017-07-16 35 views
1

我只是使用ExpressJS瞭解NodeJS,現在我正在使用express-validator來了解自定義驗證器。 我做了一個自定義驗證器來檢查用戶名可用性。但在控制檯它返回:警告:意外的返回值:'undefined'由'custom'驗證器返回(ExpresJS)

警告:意外的返回值:「未定義」通過「自定義」驗證

返回,但我SEEE我的編碼,我敢肯定,沒有任何錯誤。所有的值都返回,但自定義驗證器似乎不再工作。

這是我自定義的驗證:

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; 
     }); 
    } 
} 

}));

回答

0

錯誤是相當期望的,因爲您不會爲驗證器函數返回任何內容,所以只會在回調函數內返回。

解決的辦法是返回一個Promise,該Promise將在promise解析時返回布爾值。

+1

謝謝你...我現在使用Promise工作。但在express-validator自述文件中,我沒有看到它使用承諾來製作自定義驗證器。我剛剛讀了關於Promise。我客人必須使用承諾,因爲它是異步過程(koneksi.query方法)。我對嗎? –

+0

是的。快速驗證程序,也可以使用承諾https://github.com/ctavan/express-validator/issues/318 –

+0

感謝您的鏈接。我真的錯過了太多的東西:D –