【发布时间】:2014-01-21 10:41:55
【问题描述】:
我是 Node.js 和 Express 的新手。我知道这些函数是异步执行的,但我不知道如何使用全局变量。在这里,我连接到 mysql 数据库,检索查询结果并将它们呈现在我的 test.html 页面上。然后在 mysql.js 文件中,我想将这些结果保存在一个名为 entry 的数组中,以便其他 get() 可以使用这些相同的结果。以我对 Node.js 的有限理解,我能想到的唯一选择是在另一个 get() 中再次查询数据库。如何使用这个全局来保存匿名函数的查询结果?另外我应该调用什么事件和函数才能正确执行我的 connection.end()?
//mysql.js
var express = require('./express');
var mysql = require('mysql');
var hbs = require('./hbs');
var app = express();
app.set('view engine', 'html');
app.engine('html', hbs.__express);
var connection = mysql.createConnection({
host: '127.0.0.1',
user: 'root',
password: 'password',
database: 'db',
port: 3306
});
connection.connect();
entry=[];
app.get('/', function(req, res){
connection.query(
'SELECT * FROM table where ID < 10;',
function(err, result, fields)
{
if(err) throw err;
res.render('test',{title:"title", entries:result});
entry = result;
});
});
app.get('/article/:id', function(req, res) {
res.render('article',{title:entry.title, blog:entry});
});
app.listen(3000);
//connection.end();
<h1>HTML Test</h1>
{{#each entries}}
<p>
<a href="/article/{{ID}}">{{Name}}</a><br/>
Name: {{Name}}
</p>
{{/each}}
【问题讨论】:
标签: javascript html mysql node.js express