我有这样的表:
- 没有
- 字母
没有表包含(1,2,3,4)
alphabets 表包含 (apple,ball,cat,dog)
这是我的 js 文件:
var connection = require('../connection');
function Todo() {
this.get = function(res) {
connection.acquire(function(err, con) {
con.query('select * from no', function(err, result) {
for(var key in result) {
var no = result[key].number;
console.log(no);
con.query('select * from alphabets', function(err, result2) {
for(var key in result2) {
var alph = result2[key].alphabets;
console.log(no+"."+alph);
}
console.log('\n');
});
}
con.release();
res.send(result);
});
});
};
}
module.exports = new Todo();
我需要在两个查询之间建立父子关系,没有表作为父项,字母表作为子项。
我在命令提示符下的预期输出:
1.apple
1.ball
1.cat
1.dog
2.apple
2.ball
2.cat
2.dog
3.apple
3.ball
3.cat
3.dog
4.apple
4.ball
4.cat
4.dog
我得到的输出:
1
2
3
4
4.apple
4.ball
4.cat
4.dog
4.apple
4.ball
4.cat
4.dog
4.apple
4.ball
4.cat
4.dog
4.apple
4.ball
4.cat
4.dog
我想知道为什么第一个查询异步运行并完成循环。如何在两个查询之间创建关系,以便查询同步运行,避免在字母表中重复没有表的最后一个值?
最佳答案
您可以使用 SynJS 同步运行带有回调的函数.我稍微重构了你的代码,这里是一个工作版本:
global.SynJS = global.SynJS || require('synjs');
var mysql = require('mysql');
var connection = mysql.createConnection({
database : 'tracker',
user : 'tracker',
password : 'tracker123'
});
var myFunction1=function( mysql, connection ) {
connection.connect(function(err) {
SynJS.resume(_synjsContext);
});
SynJS.wait();
var result;
connection.query('select * from no', function(err, res) {
result = res;
SynJS.resume(_synjsContext);
});
SynJS.wait();
for(var key in result)
{
var no = result[key].number;
console.log(no);
var result2=null;
connection.query('select * from alphabets', function(err, res2) {
result2 = res2;
SynJS.resume(_synjsContext);
});
SynJS.wait();
for(var key in result2)
{
var alph = result2[key].alphabets;
console.log(no+"."+alph);
}
console.log('\n');
}
};
SynJS.run(myFunction1,null, mysql, connection, function (ret) {
console.log('done');
});
关于mysql - 如何在EXPRESSJS/MYSQL中获取父子关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41478451/