我有这个应用程序,允许用户查看电影,我正在尝试添加一个功能,从电影中抓取海报并将其显示在评论旁边。我尝试使用
执行此操作查询数据库并返回电影列表=> imdb-id获取IMDB ID => imdb获取海报url =>将其添加到变量并使用pug编译
但是,我无法让它工作,因为数组总是在其他任何运行之前返回空。我试过使用异步瀑布,但我无法弄清楚如何循环返回的数组,并传递ID以获取网址
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
})
答案 0 :(得分:1)
我建议您使用promises或es2017 async / await代替。
附注:异步瀑布中的第一个块是同步的,并且您不会在那里执行任何冗长的操作。您可以将connection.query行合并到其中。
使用async / await,您的代码可能如下所示:
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);
}
}