0

Node.js を使用して結果セットをクライアントに返す際に問題が発生しています。私はそれに慣れておらず、プロジェクトに使用していますが、行き詰まっており、その理由がわかりません。状況は次のとおりです。Web ページ、サーバー、リクエスト ハンドラー、およびデータベース インターフェイスがあります。クライアントとサーバーの間で問題なくデータを送受信できます。うまくいかないのは、クエリの結果をクライアントに送り返そうとしたときだけです。

function doSomething(response)
{
    var data = {
        'name': 'doSomething'
    };

    response.writeHead(200, {'Content-Type': 'text/html', 'Access-Control-Allow-Origin': '*'});     
    response.end(JSON.stringify(data));
}

クライアント側のオブジェクトから名前を読み取ることができるので、これはうまく機能しますが、

function fetchAllIDs(response)
{
    dbInterface.fetchAllIDs(function(data) {
        // console.log(data) prints the correct information here        
        response.writeHead(200, {'Content-Type': 'text/html', 'Access-Control-Allow-Origin': '*'});     
        response.end(data);
        // console.log(data) from the client side is just blank
    });
}

問題は、コールバックと応答の処理方法にあると思います。mysql を使用しなくても、残りのコードは正常に動作するからです。ありがとう!

編集: 人々を混乱させると思われる部分コードを削除しました。コールバックの外に応答コードがある場合、サーバーにデータを戻すことができることを示すだけでした。私の実際のコードでは、2 つの応答ステートメントをまとめていません。fetchAllIDs 関数からクライアントに行を戻すことができません。

4

1 に答える 1

0

あなたがそれを書いている方法は、

reponse.end('This string is received by the client'); 

line は常に、応答が終了したことを意味するコールバック関数の前に呼び出されます。

JS では、次のイベント (コールバック関数) がキューから取り出される前に、すべてのコードが終了します。上記の行をコメントアウトして // テストします

于 2013-01-27T17:04:33.697 に答える