使用Node.js处理多个MySQL查询

我是事件/回调样式编程和NodeJS的新手。我正在尝试实现一个小的http服务器,它使用node-mysql模块来提供ddbb数据。

我的问题来自查询结构。由于经常有一些查询需要运行先前查询的结果,因此我无法同时(异步)运行所有查询,因此不得不等待一些结果。

我的第一种方法是同时运行所有非依赖性查询,然后循环运行,直到所有非依赖性查询都设置了一个标志,说我已经完成,这样我就可以继续处理非依赖性(同步)查询,但是我不这样做知道这是否是正确的方法。

像这样:

function x(){

var result_for_asynch_query_1 = null

var result_for_asynch_query_2 = null

mainLoop(){

// call non-dependant query 1

// call non-dependant query 2

// loop until vars are != null

// continue with queries that require data from the first ones

}

}

//for each browser request

httpServer{

call_to_x();

}.listen();

这样,我可以节省一些时间来获得最终结果,因为我不需要以串行方式等待所有响应,而只是等待最长的响应。

有一种通用的方法吗?我不遵循的任何设计模式?

回答:

尝试以其他方式思考(异步流howtonode.org上有很好的介绍)

var db = get_link_or_pool();

do_queries( callback ) {

db.query(sql1, function(err, res1) {

if (err) {

callback(err);

return;

}

// use res1 ...

db.query(sql2, function(err, res2) {

if (err) {

callback(err);

return;

}

callback(null, res2); // think 'return'

}

});

}

request_handler(req) {

do_queries( function(err, result) {

if(err)

report_error(err);

else

write_result(req, result);

});

}

以上是 使用Node.js处理多个MySQL查询 的全部内容, 来源链接: utcz.com/qa/404217.html

回到顶部