简体   繁体   English

在 Node.js MySQL 中等待查询

[英]Wait for query in Node.js MySQL

When I run this right now the page renders before it can receive the data from MySQL.当我现在运行它时,页面会在它可以从 MySQL 接收数据之前呈现。 The loop goes for all the files in a folder and finds that data in the How can I make it wait for the data to be sent before loading the webpage?循环遍历文件夹中的所有文件,并在加载网页之前如何让它等待数据发送?

app.get('/explore', function(req,res){
  var fileNames = new Array();
    pool.getConnection(function(err, connection) {
      fs.readdirSync('./files').forEach(file => {
        if (err) throw err;
        var requester = "SELECT * FROM files WHERE dbname = '" + file + "'";
        pool.query(requester, function (err, result) {
          if (err) throw err;
          fileNames.push(result[0].name);
        });
        connection.release();
      });
    });
  res.render('explore', { fileNames : fileNames })
});

You can make minor corrections in the code so that it renders as intended.您可以对代码进行小幅修正,使其按预期呈现。

app.get('/explore', function(req,res){
  var fileNames = new Array();
    pool.getConnection(function(err, connection) {
      fs.readdirSync('./files').forEach(file => {
        if (err) throw err;
        var requester = "SELECT * FROM files WHERE dbname = '" + file + "'";
        pool.query(requester, function (err, result) {
          if (err) throw err;
          fileNames.push(result[0].name);
          res.render('explore', { fileNames : fileNames })
          //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
        });
        connection.release();
      });
    });
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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