1
我不知道爲什麼節點js不等到函數完成循環。 它只是調用函數,但不要等到它完成。 任何人都知道這個問題的解決方案如何延遲循環,直到回調函數完成,並繼續循環node.js
我去了建築物的所有房間和每個房間的學生在節點js。
var mysql = require('mysql');
var dbconfig = {
"host" : "localhost",
"database" : "university",
"user" : "root",
"password" : ""
};
var connection = mysql.createConnection(dbconfig);
exports.room = function(req,res){
get_room(function(data){
res.write(JSON.stringify(data));
res.end();
});
});
功能得到所有的空間。
function get_room(callback){
connection.query('SELECT * FROM Room', function(err, data){
var Ldata = data.length;
if(Ldata > 0){
for(var i=0;i<Ldata;i++){
var roomid = data[i]['roomid'];
get_student(roomid,function(student){
data[i].students = student;
});
/* wait get student call back complete and continue loop*/
}
/* wait untill loop complete*/
callback(data);
}
});
}
功能讓學生在房間裏。
function get_student(roomID,callback){
connection.query('SELECT * FROM Student WHERE roomid = '+roomID,function(err, rows) {
callback(rows);
});
}
我想拿像下面
[
{
"roomid": 1,
"room_name": "A",
"students": [
{ "id": "001", "name": "jonh" },
{ "id": "002", "name": "richard" },
{ "id": "003", "name": "linda" }
]
},
{
"roomid": 2,
"room_name": "B",
"students": [
{ "id": "011", "name": "swag" },
{ "id": "012", "name": "olli" },
{ "id": "013", "name": "jia" }
]
},
]
您正在使用的Node.js版本是什麼? –
我目前的版本是v6.3.1 但是我可以根據需要更改版本 –
我認爲如果你開始看「承諾」會對你更好。看看這個線程:https://github.com/mysqljs/mysql/issues/929 –