0

同期性が前提となる .net の世界から来て、データベース、lucene、または別の API などのバックエンド ソースからデータをクエリできますが、node.js の適切なサンプルを見つけるのに苦労しています。非同期が標準です。

私が抱えている問題は、クライアントが私のhapiサーバーへのAPI呼び出しを行っていることです。そこから、パラメーターを取り込んで、requestライブラリを使用して呼び出すElasticsearchクエリを形成し、インスタンスが戻るのを待つ必要がありますビューにデータを入力してクライアントに送り返す前に、問題は、データが返されると要求ライブラリがコールバックを使用し、それまでに空のビューがクライアントに返されていることです。

javascript の EOF が既にヒットし、その場所に null が返されているため、コールバック内に戻り値を配置しようとしても機能しません。サービス呼び出し内でデータを取得する最良の方法は何ですか?

元:

 var request = require('request');
 var options = {
   url: 'localhost:9200',
   path: {params},
   body: {
     {params}
   }
 }

 request.get(options, function(error, response){
    // do data manipulation and set view data
 }

 // generate the view and return the view to be sent back to client
4

1 に答える 1

1

非同期タスクが正しい論理順序で実行されるように、コールバックをネストして、hapi ハンドラーで要求呼び出しをラップします。擬似hapiハンドラーコードは次のとおりです

function (request, reply) {

    Elasticsearch.query((err, results) => {

        if (err) {
            return reply('Error occurred getting info from Elasticsearch')
        }

        //data is available for view


     });


 }

前回の質問で述べたように、hapi の事前ハンドラーを使用して、クライアントに返信する前に非同期タスクを実行できるようにします。詳細については、こちらのドキュメントを参照してください。また、request の代わりにwreckを使用すると、より堅牢で使いやすくなります。

于 2016-04-16T22:33:55.110 に答える