2017-07-16 1 views
1

ExpressJSを使用してNodeJSについて学ぶだけで、エクスプレスチェック機能付きのカスタムバリデータについて理解しています。 私はユーザー名の有効性を確認するカスタムバリデータを作成しています。しかしコンソール上で、それは返す:警告:予期しない戻り値: 'カスタム'バリデーター(ExpresJS)によって返された '未定義'

WARNING:予期しない戻り値:「未定義」「」カスタムバリデータ

によって返さしかし、私は私のコーディングに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

バリデータ関数で何も返さないため、コールバック関数内でのみ返されるため、エラーはかなり予想されます。

解決策は、約束が解決されたときにブール値を返す約束を返すことです。

+1

ありがとうございます...私は今Promiseを使用しています。しかし、エクスプレスバリデータのreadmeファイルでは、カスタムバリデータを作成する約束を使って見ていません。そして私はプロミスについて読んだだけです。私はそれが非同期プロセス(koneksi.queryメソッド)であるため、私はゲストに約束を使わなければなりません。私は正しい? –

+0

はい。エクスプレスバリデーターは、約束事でも使えますhttps://github.com/ctavan/express-validator/issues/318 –

+0

ありがとうございます。私は本当にあまりにも多くのものを逃している:D –

関連する問題