私信  •  关注

Logan Luedtke

Logan Luedtke 最近回复了
6 年前
回复了 Logan Luedtke 创建的主题 » 如何导出mysql查询返回的“result”?

我已经开始工作了!问题是我的查询是一个异步函数,我希望得到我的数据就好像我在同步编码一样。谢谢你的建议,塞萨尔使用承诺,因为这是解决我的问题。下面是正在工作的代码。

connection.js,也是由Cesar建议的。

    var mysql = require('mysql');

    var con = mysql.createConnection({
      host: "localhost",
      user: "username",
      password: "password",
      database: "testdb"
    });

    module.exports = con;

现在包装在promise中的query.js页面;

    var con = require('./connection.js');

    module.exports = new Promise(function(resolve, reject){
        con.connect(function(err) {
          if (err) throw err;
          con.query("SELECT * FROM customers", function (err, result, fields) {
            if (err) throw err;
              resolve(result);
          });
        });
    });

当在3000端口访问app.js时,它将用db数据呈现display.ejs

    var dataMod = require('./query.js');
    var express = require('express');

    var app = express();

    app.set('view engine', 'ejs');

    app.get('/', function(request, response){

      dataMod.then(function(data){
          response.render('display', {data: data});
      });

    });

    app.listen(3000);

以及simple display.ejs页面

    <!DOCTYPE html>
    <html>
      <body>
        <p> <%= data[0].name %> <%= data[0].address %></p>
        <p> <%= data[1].name %> <%= data[1].address %></p>
        <p> <%= data[2].name %> <%= data[2].address %></p>
      </body>
    </html>

显示

37号公路公司

城市狙击公路27号

路旁偏僻处

在浏览器上!

这只是一个例子,是故意硬编码的。不过,最重要的部分是使用promise从数据库链接到浏览器。谢谢塞萨尔!