【问题标题】:Node Async.auto Callback is not a function节点 Async.auto 回调不是函数
【发布时间】:2017-09-13 16:01:11
【问题描述】:

我的 nodejs 脚本和异步库有问题。 我有一个带有 2 个部分的 async.auto。第一部分好的,在第二部分我有另一个 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);
    }]
});

【问题讨论】:

  • 我没有时间真正研究这个,但我会尝试的第一件事是查看zutKopf 的所有调用者并确认实际的function() 已传递给参数列表。例如,也许你不小心传入了字符串。

标签: node.js express async.js


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-03-04
    • 2018-07-15
    • 2021-10-29
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多