我有一个允许用户评论电影的应用程序,我正在尝试添加一个功能,从电影中抓取海报并将其显示在评论旁边。我尝试使用
查询数据库并返回电影列表 => 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
})
我建议您改用 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);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句