私は最初の Node.js プロジェクトに取り組んでおり、問題に遭遇しました。入力検証にnode-validatorを使用し、ORM としてSequelizeを使用しています。
非同期検証の問題
特定のユーザー名がまだ利用可能かどうかを確認するために、いくつかのカスタム検証を作成しようとしています。唯一の問題は、Sequelize のファインダーが非同期であるのに対し、node-validator には非同期検証のサポートが組み込まれていないことです。
私が試した2つのアプローチ
- ここで説明されているようにコールバックを使用する
- Sequelize の組み込み検証の使用
上記のどちらのアプローチにも満足していません。コールバックを使用するとすぐに面倒になり、Sequelize の組み込みの検証を使用すると他の問題が発生します。
どうやら、Sequelize でファインダーを同期的に使用する方法はないようです。これが私の解決策でした。
今何?
この問題をクリーンな方法で解決するには、どのようなオプションが必要ですか? 理想的には、検証プロセスを次のようにしたいと思います。
req.sanitize('username').trim();
req.check('username', 'Your username must be between 4 and 32 characters long').len(4, 32);
req.check('username', 'That username is already taken').usernameIsAvailable();
非同期検証をきれいに実装するにはどうすればよいですか? ご協力ありがとうございました!