2016-04-16 49 views
0

來自同步性是給定的.net世界我可以從後端數據庫,如數據庫,lucene甚至另一個API查詢我的數據, m在尋找node.js的很好的示例時遇到了麻煩,因爲異步是常見的。node.js和hapi:從數據庫中同步獲取數據

我遇到的問題是客戶端正在對我的hapi服務器進行API調用,並且從那裏我需要接受參數並形成一個Elasticsearch查詢來調用,使用request庫,然後等待爲了實例在填充我的視圖並將其發送回客戶端之前返回,存在的問題是請求庫在數據返回後使用回調,並且空視圖早已返回給客戶端。

嘗試將回調放在回調中不起作用,因爲javascript的EOF已經命中並且返回null,所以在服務調用中檢索數據的最佳方法是什麼?

EX:在高致病性禽流感的處理程序

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 
+0

你能告訴我們你的hapi代碼嗎? –

回答

1

裹請求調用通過嵌套回調,這樣的異步任務在正確的邏輯順序執行。僞高致病性禽流感的處理程序代碼如下

function (request, reply) { 

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

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

     //data is available for view 


    }); 


} 

正如我前面所說的在你的最後一個問題,使用高致病性禽流感的前處理程序來幫你做異步任務回答您的客戶端之前。有關更多信息,請參閱文檔here。同時使用wreck而不是要求它更健壯,更簡單地使用