我是node.js的新手。我遇到了GET请求的问题。我正在使用2个mysql查询。第一个是返回一些id,我在第二个查询中使用了那些ID。 在控制台中,所有行都已成功打印,但在浏览器中只有第一行。
我的代码结构如下:
function userProjects(request, response) {
connection.query("1st query", function(err, first_output, fields) {
response.writeHead(200, {
"Content-Type": "application/json"
});
for (var i in first_output) {
var obj = first_output[i];
connection.query("select * from table where parent_id=" + obj.id, function(err, apartmentRows, fields) {
console.log(apartmentRows);
response.write("apartments are : " + JSON.stringify(apartmentRows));
response.end();
});
}
});
}
到目前为止,我已经通过浏览各种内容来理解,由于response.end(),它停止在这里获取剩余的行。这就是为什么所有人都不打印。但我没有找到解决方案。
提前致谢。
答案 0 :(得分:0)
在调用response.end()之前,您需要确保执行所有查询。我天真的方法是设置一个计数器标志来检查执行的查询数量。完成所有查询后,只需结束响应。
function userProjects(request, response) {
connection.query("1st query", function(err, first_output, fields) {
response.writeHead(200, {
"Content-Type": "application/json"
});
var totalQueries = 0;
for (var i in first_output) {
var obj = first_output[i];
totalQueries++; //increases the number of query performed
connection.query("select * from table where parent_id=" + obj.id, function(err, apartmentRows, fields) {
console.log(apartmentRows);
response.write("apartments are : " + JSON.stringify(apartmentRows));
totalQueries--; //decreases the query count
if (totalQueries == 0) //when all queries are performed end the response
response.end();
});
}
});
}