[英]node.js async waterfall for each in array
我有一個允許用戶查看電影的應用程序,並且我正在嘗試添加一項功能,可從電影中獲取海報並將其顯示在評論旁邊。 我嘗試使用
查詢數據庫並返回電影列表=> imdb-id以獲取IMDB ID => imdb以獲取海報url =>將其添加到變量中並使用pug進行編譯
但是,我無法使它正常工作,因為在運行其他任何操作之前,該數組始終首先返回空。 我嘗試使用異步瀑布,但無法弄清楚如何遍歷返回的數組,並傳遞ID以獲取url
async.waterfall([
function (callback) {
console.log('Request Id:', username);
var query = "SELECT title, rating, review FROM movies WHERE username = \"" + username + "\" ORDER BY title;";
callback(null, query);
}, function (query, callback) {
// Run query on db
connection.query(query, callback);
}, function (rows, fields, cb) {
// Get array of titles
var rowArray = rows;
console.log(rowArray);
}
],
function(err) {
// error stuff
})
我建議您改為使用Promise或es2017 async / await。
旁注:異步瀑布中的第一個塊無論如何都是同步的,並且您不在那里執行任何冗長的操作。 您可以將connection.query行合並到其中。
使用異步/等待,您的代碼可能如下所示:
async function sendQuery() {
console.log('Request Id:', username);
const query = "SELECT title, rating, review FROM movies WHERE username = \"" + username + "\" ORDER BY title;";
try {
const rows = await connection.query(query);
console.log(rowArray);
} catch(err) {
console.log(err);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.