正如标题所示,我在从MySQL响应访问connection.query()函数之外的对象时遇到了困难。
router.get('/', function(req, res) {
var testimonials;
// Running database queries
connection.query('SELECT * FROM testimonials', function(err, rows, fields) {
if (!err) {
testimonials = rows;
console.log(testimonials); // THIS WORKS
}
if (err) {
console.log('Error performing database query.');
}
});
res.render('index', {
title: 'Title',
description: 'Description in here.',
testimonials: testimonials // THIS RETURNS UNDEFINED
});
});发布于 2015-10-16 12:48:28
您应该将res.render放在回调函数中,例如:
router.get('/', function(req, res) {
var testimonials;
// Running database queries
connection.query('SELECT * FROM testimonials', function(err, rows, fields) {
if (!err) {
testimonials = rows;
res.render('index', {
title: 'Title',
description: 'Description in here.',
testimonials: testimonials // this will work!!!
});
}
if (err) {
console.log('Error performing database query.');
}
});
});注意:在回调函数之外使用testimonials时会得到testimonials,因为方法connection.query是异步的,它将在您的res.render方法之后运行。
https://stackoverflow.com/questions/33170866
复制相似问题