2017-04-04 39 views
-1

我遇到了一些問題。我需要將數據庫中的所有數據保存到變量result,但我只是沒有得到它。如果任何人都可以幫助我,那將會很酷。如何使用async.series nodejs?

我是新的使用async.js。

感謝。

function getContent() { 
    var result = []; 

    async.series([ 
     getDb 
    ], endFunction); 

    function getDb(done) { 
     var query = "SELECT title , launch_year FROM content WHERE content_genre_id=1 && content_type_id!=2 LIMIT 2"; 
     mysqlConnection.query(query, function (err, data) { 
      console.log("getting data", data); 
      result = data; 
      //async.each(resultado, getId, done); 
      done(); 
      return result; 
     }); 
    } 
} 
console.log(result); 
+0

是的,但我用的數據庫需要一個例子.... –

+1

'做(空,結果);'的結果傳遞給異步回調,這樣'endFunction'可以閱讀 – CaptEmulation

+0

@Frxstrem該職位是與OP的問題無關。 – Mikey

回答

1

您應該使用

mysqlConnection.query(query, done); 

當你沒有做任何其他有關數據。然後使用

function endFunction(err, result) { 
    console.log(result); 
} 

並且您的數據將在該異步回調中可用。

+0

不確定爲什麼人們在回答OP的問題時壓低了我們的答案。雖然我認爲你的'endFunction'的第一個參數應該是錯誤'err'。 – Mikey

-1

如果你看一下async.series()的文件,上面說的方法有兩個參數:所述任務的陣列和一個可選的回調函數,當所有任務完成時或有錯誤 - 你確實有。

每個任務函數都有一個參數(在您的情況下,爲done),這是一個函數,當您完成任務或發生錯誤時必須調用該函數。在第一種情況下,您可以在第一個參數中傳遞null並在第二個參數中傳遞任何其他信息時調用該函數,例如done(null, data)。在第二種情況下,您可以在傳遞錯誤時調用該函數,例如done(err)

function getContent() { 
    async.series([ 
     getDb 
    ], endFunction); 

    function getDb(done) { 
     var query = "SELECT title , launch_year FROM content WHERE content_genre_id=1 && content_type_id!=2 LIMIT 2"; 
     mysqlConnection.query(query, function (err, data) { 
      // if there is an error, send back the error and stop 
      if (err) return done(err); 
      console.log("getting data", data); 
      // otherwise, send back the data 
      done(null, data); 
     }); 
    } 

    function endFunction (err, results) { 
     // once all tasks are complete, this function will be called and will have either an error or each result from each task 
     console.log('err', err); 
     console.log('results', results); 
    } 
}