2016-01-27 92 views
-2

我要得到我的信息,以打印這樣的:兩個異步環和MySQL查詢在節點JS

enter image description here

這是我到目前爲止有:

connection.query('SELECT `keys`.*,`transaction`.*,`keys`.`id` as kid, `transaction`.`id` as tid FROM `transaction` JOIN `keys` ON `keys`.`id` = `transaction`.`keys_id` WHERE `transaction`.`status_pay`= 1 and `transaction`.`status` = 1').then(function (rows) { 
        async.each(rows, function (record, next) { 
         async.each(inventory, function (rec, nex) { 
          connection.query('UPDATE `transaction` SET `amount_two`= `amount_two` + 1 WHERE `id`= \''+record.tid+'\'').then(function (err, res) { 
           console.log('3'); 
          }); 
          console.log(rec.id); /// 4317648454 ... etc.. 
         }); 
        }); 
       }); 

但由於某種奇怪的原因,它看起來像這樣:

enter image description here

+0

在這兩種情況下,eachSeries都會解決這個問題,假設你正確地調用'next'。 –

+0

你能舉個例子嗎?請 – user3458952

回答

0

這似乎是因爲你的connection.query似乎是異步則需要在這樣的時刻打破了庫存出每個迴路和過程之一:

  connection.query('SELECT `keys`.*,`transaction`.*,`keys`.`id` as kid, `transaction`.`id` as tid FROM `transaction` JOIN `keys` ON `keys`.`id` = `transaction`.`keys_id` WHERE `transaction`.`status_pay`= 1 and `transaction`.`status` = 1').then(function (rows) { 
       async.each(rows, function (record, next) { 
        var count = 0; 
        ProcessRow(count, inventory, next); 
       }); 
      }); 

      function ProcessRow(count, inventory, next) 
      { 
       if (inventory.length > 0) { 
        console.log(inventory[count].id); /// 4317648454 ... etc.. 
        connection.query('UPDATE `transaction` SET `amount_two`= `amount_two` + 1 WHERE `id`= \'' + record.tid + '\'').then(function (err, res) { 
         console.log('3'); 
         count++; 
         if(count < inventory.length) 
          ProcessRow(count, inventory, next); 
         else 
          next(); //assumeing you want to call next when you finish processing the inventory for this row. 
        }); 
       } 
      } 

你可能需要做的一樣'行'以及? 希望這有助於。

編輯:我沒有看到你在你的示例中調用下一個,所以我不知道什麼時候你需要它觸發,但我沒有編輯帖子來反映,如果你需要在行處理後調用它。

+0

對代碼進行了小修改。 ...和另一個編輯 – Rosenumber14

+0

所以,呃......下一個叫什麼名字? –

+0

假設他們想在庫存循環中調用它,您可以將它傳遞並在最後調用。我需要檢查我的源代碼,並在大約15分鐘後回到電腦時編輯。 – Rosenumber14