【发布时间】:2015-08-24 14:21:38
【问题描述】:
connection.query('SELECT * from enquiry', function(err, rows, fields) {
if (err) throw err;
var enquiryJson=[];
for (var i in rows) {
var id=1,jsondata,message;
connection.query('SELECT status_message from status where id='+rows[i].status_id, function(err, statusrows, field) {
console.log(statusrows[0].status_message);
message=statusrows[0].status_message;
});
jsondata={
"id": id++,
"name": rows[i].name,
"mobile": rows[i].mobile,
"city": rows[i].city,
"state": rows[i].state,
"nature_of_enq": rows[i].nature_of_enq,
"status": message
};
enquiryJson.push(jsondata);
}
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(enquiryJson));
});
});
我只是 nodejs 的初学者。我只想知道如何等待子查询返回结果?在上面的代码中,我试图设置一个 JSON 键(“状态”)值,该值将由子查询返回。但我总是将消息变量设为未定义。但是我在控制台中得到了消息变量。我认为节点服务器不会等待子查询的结果。有什么解决办法?提前致谢
【问题讨论】:
-
您可以使用
aync.each(github.com/caolan/async#each) 并在一切结束时调用回调函数。