2016-04-16 52 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而不是要求它更健壮,更简单地使用