我已经开始工作了!问题是我的查询是一个异步函数,我希望得到我的数据就好像我在同步编码一样。谢谢你的建议,塞萨尔使用承诺,因为这是解决我的问题。下面是正在工作的代码。
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从数据库链接到浏览器。谢谢塞萨尔!