[英]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.