10

検証にエクスプレスバリデーターを使用しています。データベースにマングースを使用していますが、検証も組み込まれています。どちらを使用すればよいですか?

また、express-validator の検証が並行しているかどうかも知りたいです。たとえば、次のコードをご覧ください。

req.checkBody('email', 'Invalid email').notEmpty().isEmail().isUnique();
req.checkBody('password', 'Invalid possword').notEmpty().len(8, 30);
req.checkBody('first_name', 'Invalid first_name').notEmpty().isAlpha();
req.checkBody('last_name', 'Invalid last_name').notEmpty().isAlpha();
req.checkBody('dateofbirth', 'Invalid dateofbirth').notEmpty.isDate();

isUnique() は、電子メールがまだ登録されていないかどうかを確認するカスタム検証メソッドであり、データベースに照会して検証します。上記のコードでは言及されていませんが、データベースクエリがそれぞれで行われる複数のフィールドを検証する必要がある他のポストリクエストもいくつかあります。

したがって、上記の各チェックメソッドを並行して実行できるかどうかを知りたかったのです。これにより、より高速になり、ノードのようになります。これらを async のように並行して実行するためのモジュールを使用したいと思います。また、これらのチェック メソッドがすでに並行して実行されているかどうかも知りたいです。

これを理解するのを手伝ってください。前もって感謝します。

4

3 に答える 3

10

express-validatorブラウザ/クライアントから渡された入力を検証するためのものです。Mongoose の検証は、新しく作成されたドキュメントを検証するためのものです。どちらも目的が異なるため、どちらを使用すればよいかという明確な答えはありません。両方を使用することもできます。

検証の順序について: チェックは連続して実行されます。を使用して、チェックが並行して実行されているように見せることもできますasync.parallel()、実際には、チェックが同期しているためそうはなりません。

EDIT : node-validator(したがってexpress-validator) は文字列バリデーターです。一意性のテストは文字列操作ではありませんが、データ モデルで動作するため、使用しようとしないでください(実際、できるnode-validatorとは思いません)。

代わりに、Mongoose のunique機能を使用して、電子メール アドレスがデータベース内で 1 回だけ出現するようにすることをお勧めします。

または、 などの非同期操作をサポートするバリデーター モジュールを使用しますasync-validate

于 2013-07-13T08:46:29.653 に答える