Node Async.auto Callback不是一个函数

时间:2017-09-11 18:13:27

标签: node.js express async.js

我的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);
    }]
});

1 个答案:

答案 0 :(得分:0)

在async.auto中依赖函数从前一个函数接收第一个参数,然后您可以在函数头中定义回调,如two: ['one', function(parameter, callback)而不是two: ['one', function(callback)