在我的示例中,我有两个需要完成的查询才能呈现页面。 如果我将查询2嵌套在查询1的“结果”回调中,我可以使查询同步运行。 但是,当查询数量增加时,这种方式会变得非常复杂。
如何同时运行多个(在本例中为2个)数据库查询,而不在前一个查询的“结果”回调中嵌套后续查询?
我查看了Node模块中的“Flow control / Async goodies”,并尝试过flow-js,但我无法使用异步查询使其正常工作。
下面列出了我正在尝试从“/home”路由执行的两个查询。 Node专家们能否解释一下正确的方法?
app.get('/home', function (req,res) {
var user_array = [];
var title_array = [];
// first query
var sql = 'select user_name from users';
db.execute(sql)
.addListener('row', function(r) {
user_array.push( { user_name: r.user_name } );
})
.addListener('result', function(r) {
req.session.user_array = user_array;
});
// second query
var sql = 'select title from code_samples';
db.execute(sql)
.addListener('row', function(r) {
title_array.push( { title: r.title } );
})
.addListener('result', function(r) {
req.session.title_array = title_array;
});
// because the queries are async no data is returned to the user
res.render('home.ejs', {layout: false, locals: { user_name: user_array, title: title_array }});
});
select * from customers; select * from products;
- jcolebrand