簡體   English   中英

node.js和hapi:從數據庫同步獲取數據

[英]node.js and hapi: fetching data from a database synchronously

來自一個提供同步性的.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

通過嵌套回調在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的預處理程序來幫助您執行異步任務。 有關更多信息,請參見此處的文檔。 還可以使用殘骸代替請求,它更健壯,更簡單

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM