2017-09-11 5 views
0

nodejs 스크립트 및 비동기 라이브러리에 문제가 있습니다. 필자는 2 부분으로 async.auto를 얻었다. 첫 번째 부분은 ok입니다. 두 번째 부분에서는 async.auto와 거의 같은 두 부분으로 SQL 쿼리와 배열이 변경되었습니다. 하지만 여기서 첫 번째 부분은 잘 작동하고, 두 번째 것은 zutKopf가 콜백 함수 cbzutk가 함수가 아니라는 오류로 멈 춥니 다. 필자는 언젠가 그것을 고치려고했지만 첫 부분 인 zubKopf와 같이 작성 되었기 때문에 실패를 알 수 없습니다.노드 Async.auto 콜백이 함수가 아닙니다.

잘하면 도와 줄 수 있습니다.

는 기능에 따라 async.auto

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

정말 이걸 들여다 볼 시간이 없었습니다.하지만 가장 먼저 시도 할 것은'zutKopf'의 모든 호출자를보고 실제로 'function()'이 매개 변수 목록에 전달되는지 확인하는 것입니다. 예를 들어 실수로 문자열을 전달한 것일 수 있습니다. –

답변

0

만큼 먼저 이전 함수의 파라미터를 수신 한 다음 two: ['one', function(parameter, callback) 대신 two: ['one', function(callback) 같이 functionheader의 콜백을 정의 할 수 접견.