1

これを構造化する論理的な方法を考えようとしています。簡単にするために、Node.js、Redis、および Express.js を使用してユーザー登録ページを作成しています。

ユーザーがページに詳細を投稿します。

ユーザー名が有効であることが確認された後、Redis はユーザー名が一意であることを確認します。そうである場合は続行し、そうでない場合は、エラー メッセージと以前のすべての詳細を返します。

パスワードが有効であることが確認されました。そうでない場合はエラーが返され、続行しません。

メールは Redis で一意であることが確認されています。そうである場合は続行し、そうでない場合はエラー メッセージを返して停止します。

この時点でエラーがなければ、データが Redis に挿入されます。

これは非常に単純に思えますが、コールバックを使用すると、特にエラーを返す場合に、完全な混乱が生じます。

これをきちんとした方法で構造化するにはどうすればよいですか?

4

1 に答える 1

1

あなたが経験したのはコールバック地獄です。コールバック関数をインライン化する代わりに名前を付けたり、同じパターンに従うなど、さまざまなことができます...

ただし、async モジュールを確認することをお勧めします。

あなたの非常に典型的なケースでは、次のように async.series を使用します。

var validateUserName = function(username, callback){
  if(username!='valid'){
    return callback('invalid username');
  }
};
var checkRedis = function(username, callback){
  // check to redis
};
var checkPassword = function(password, callback){
  // if password valid callback();
  // else callback('invalid password');
}
etc...

async.series([checkUserName, checkRedis, checkPassword, etc...], next);
于 2013-02-24T23:03:44.363 に答える