我的nodejs脚本和异步库出了问题。 我有一个async.auto 2部分。第一部分ok,在第二部分我有另外一个async.auto,其中两个部分几乎相同,sql查询和数组中有一些变化。但是第一部分在这里运行正常,第二部分zutKopf因故障而停止,回调函数cbzutk不是函数。香港专业教育学院有一天试图修复它,但无法找出失败原因,因为它的写法与第一部分zubKopf相同。
希望你能帮助我。
迎接
async.auto({
one: function(cbone){
db.getConnection(function(err, dbs){
dbs.query("insert into rezepte (kat_id, rez_name, rez_desc, rez_img) values(?,?,?,?)",[RezeptComp.rezept.kat_id,RezeptComp.rezept.rez_name,RezeptComp.rezept.rez_desc,RezeptComp.rezept.rez_img],function(err, rows) {
if (err) {
cbone(err);
return;
}
console.log('query Rezept');
rezeptId = rows.insertId;
RezeptComp.rezept.rez_id = rows.insertId;
dbs.release();
cbone(null);
});
});
},
two: ['one', function(cbtwo){
async.auto({
zubKopf: function(cbzubk){
async.eachSeries(RezeptComp.zubereitung, function(data,next){
db.getConnection(function(err,dbzubk){
dbzubk.query("insert into zubereitungKopf (rez_id, zubk_text) values("+ rezeptId +",'"+ data.zubk_text +"')",function(err, rows) {
if (err) {
cbtwo(err);
return;
}
console.log('query zubk');
zubkId = rows.insertId;
RezeptComp.zubereitung[zubkd].zubk_id = zubkId;
dbzubk.release();
async.eachSeries(data.zubp, function(data2,next2){
db.getConnection(function(err,dbzubp){
dbzubp.query("insert into zubereitungPos (zubk_id, zubp_text) values("+ zubkId +",'"+ data2.zubp_text +"')",function(err, rows) {
if (err) {
cbtwo(err);
return;
}
console.log('query zubp');
zubpId = rows.insertId;
RezeptComp.zubereitung[zubkd].zubp[zubpd].zubp_id = zubpId;
dbzubp.release();
zubpd = zubpd + 1;
next2(null);
});
});
}, function(err, results){
zubkd = zubkd + 1;
zubpd = 0;
next(null);
});
});
});
}, function(err, results){
cbzubk(null);
});
},
zutKopf: ['zubKopf', function(cbzutk){
async.eachSeries(RezeptComp.zutaten, function(data3,next3){
db.getConnection(function(err,dbzutk){
dbzutk.query("insert into zutatenKopf (rez_id, zutk_text) values("+ rezeptId +",'"+ data3.zutk_text +"')",function(err, rows) {
if (err) {
cbzutk(err);
return;
}
console.log('query zutk');
zutkId = rows.insertId;
RezeptComp.zutaten[zutkd].zutk_id = zutkId;
dbzutk.release();
async.eachSeries(data3.zutp, function(data4,next4){
db.getConnection(function(err,dbzutp){
dbzutp.query("insert into zutatenPos (zutk_id, zutp_text) values("+ zutkId +",'"+ data4.zutp_text +"')",function(err, rows) {
if (err) {
cbzutk(err);
return;
}
console.log('query zutp');
zutpId = rows.insertId;
RezeptComp.zutaten[zutkd].zutp[zutpd].zutp_id = zutpId;
dbzutp.release();
zutpd = zutpd + 1;
next4(null);
});
});
}, function(err, results){
zutkd = zutkd + 1;
zutpd = 0;
next3(null);
});
});
});
}, function(err, results){
cbzutk(null);
});
}],
final: ['zubKopf', 'zutKopf', function(error, results){
cbtwo(null);
}]
});
}],
final: ['one', 'two', function(error, results){
callback(RezepComp);
}]
});
答案 0 :(得分:0)
在async.auto中依赖函数从前一个函数接收第一个参数,然后您可以在函数头中定义回调,如two: ['one', function(parameter, callback)
而不是two: ['one', function(callback)
。