我是一名使用C./C++的人,他试图使用Node.js,Express.js和MariaDB制作一个简单的Web应用程序。
function getData(sensor)
{
var query = c.query('SELECT * FROM sensor_data WHERE id >= ALL (SELECT id FROM sensor_data WHERE sensor = ?) AND sensor = ?', [sensor,sensor]);
query.on('result', function(res) {
res.on('data',function(row) {
return(row);
});
});
}
app.get('/', function(req, res) {
res.render('index', {
temperatureSala: getData('sala').temperature + 'ºC',
humiditySala: getData('sala').humidity + '%'
});
});
我的问题是处理异步问题。当我尝试渲染页面时,渲染函数首先完成运行,然后我发现变量未定义。查询结束后,结果正确。
处理此问题的最佳方法是什么? 您有任何疑问请问。
谢谢!
答案 0 :(得分:0)
您应该这样构造app.get
。我已经省略了您的函数getData
,但是如果您需要它以备后用,则可以将其设置为采用回调方法并在该回调方法中执行res.render
。
app.get('/', function(req, res) {
const query = c.query('SELECT * FROM sensor_data WHERE id >= ALL (SELECT id FROM sensor_data WHERE sensor = ?) AND sensor = ?', ['sala', 'sala']);
query.on('result', function(queryRes) {
queryRes.on('data',function(row) {
const temperatureSala = row.temperature + 'ºC',
humiditySala = row.humidity + '%';
res.render('index', {
temperatureSala,
humiditySala
});
});
});
});