我知道node.js是事件驅動的,我應該這樣做,但我不能在我的腦海中找到一種方法來做到這一點。Node.js中的同步mysql
所以,我有這個
var querystr = "SELECT * FROM groups";
var result = "";
dbClient.query(querystr, function (err, res, fields) {
if (err) {
console.log(err);
return;
}
for(var i in res) {
result = result + "@" +res[i].name + " =";
for (var j in res[i].members.split(",")) {
var memberquery;
if (j.substr(0,1) == "@") {
memberquery = "SELECT name FROM groups WHERE id = "+j.substr(1, j.length-1);
} else {
memberquery = "SELECT username FROM users WHERE id= "+j;
}
dbClient.query(memberquery, function(err, memres, fields) {
var membername = "";
if (typeof memres[0].username == "undefined") {
membername = "@"+memres[0].name;
} else {
membername = memres[0].username;
}
result = result + " " + membername;
});
}
result = result + "\n";
}
});
,使得它同步的是對內部的問題。 基本上我生成結果變量的文檔,其中i檢查組和告訴成員所以預期輸出是
Group1 = member, member
Group2 = member, member
夫婦快速旁白的:如果你做你的第一個查詢結果的第一通,以及環路成在第二通會員,你能避免SELECT名字從組查詢。另外,如果你的數據庫被正確地規範化了,你可以想象一個單一的查詢爲你做所有的表匹配工作。 – Metal