正如标题所示,我在 connection.query()
函数之外从 MySQL 响应访问对象时遇到问题。
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
});
});
最佳答案
您应该将 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
时,您会得到 undefined
,因为 connection.query
方法是异步的,它将在您的 res.render
方法之后运行。
关于javascript - 如何将 MySQL JSON 对象从 connection.query() 传递到 res.render(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33170866/