【发布时间】:2015-07-21 04:33:01
【问题描述】:
我在尝试创建将行添加到我在 MySql 数据库上创建的新表的逻辑时遇到了一个问题。添加行时,我需要查询数据库 4 次以检查其他行,然后将正确的值添加到新行。我正在使用 node.js 和 mysql 模块来完成此操作。在编码时我遇到了一个障碍,在插入新行之前,代码不会等待 4 个查询完成,这会为每次找到的值提供 0 值。经过一番研究,我意识到回调函数是有序的,看起来像这样:
var n = 0;
connection.query("select...", function(err, rows){
if(err) throw err;
else{
if(rows.length === 1) ++n;
}
callback();
});
function callback(){
connection.query("insert...", function(err){
if(err) throw err;
});
}
注意:选择查询只能返回一项,因此 if 条件不应影响此问题。
只有一个查询要等待的回调函数对我来说很清楚,但是对于多个要等待的查询,我有点迷失了。我唯一的想法是创建另一个变量,该变量在调用回调之前递增,然后在回调函数的参数中传递。然后在回调内部,查询可以由 if 语句封装,条件是 this 是等于需要调用的查询数的变量,这里我的目的是 4。我可以看到这个工作,但不确定这种情况是否已经有内置解决方案,或者是否已经开发了其他更好的解决方案。
【问题讨论】:
标签: javascript mysql node.js callback