1

Expressjs と node.js を使用していますが、次のようなルートがあります。

    users.init(app.db, function() {

        users.checkUsername(user.username, function(err, count) {
            if (count > 0) {
                res.json({'username': 'unavailable'});
            }
        });

        users.checkEmail(user.email, function(err, count) {
            if (count > 0) {
                res.json({'email': 'unavailable'});
            }
        });

        users.insertUser(user, function(err, response) {
            res.json({'success' : 'true'});
        });

    })  

これにより、場合によっては、たとえばユーザー名と電子メールなど、複数の応答が送信されます。

このルートは ajax 経由で呼び出されます。PHP では、通常exit()、json 応答をエコーアウトした後に実行します。Expressjsでそれを行う方法はありますか?

ありがとうございました!

編集: if/else ですべてをラップするか、それぞれにフラグを設定することができますが、よりエレガントな方法があるかどうかを確認するだけです。

4

1 に答える 1

2

「複数の応答」(それが何を意味するにせよ) を行うことはできません。res.json使用するたびに、データがクライアントに送信され、応答が終了します。結果を変数に保持 (および更新) し、最後に送信する必要があります。

今、私はあなたのために2つの可能性を考えることができます:

  • ネストされたコールバック実際には非常に面倒ですが、必要になる場合もあります (たとえば、2 番目の呼び出しが最初の呼び出しに依存している場合)。

  • 非同期コールバック キューコールバックでは、他のすべてのコールバックがジョブを終了したかどうかを確認します。その場合は、応答を行います。これを自分で実装するのは少し難しいかもしれません。たとえば、優れた非同期ライブラリを試してみてください。

于 2012-04-06T16:22:20.500 に答える