繁体   English   中英

每个数组中的node.js异步瀑布

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM