【发布时间】:2021-11-25 12:34:27
【问题描述】:
我正在尝试运行查询以从表中获取一些数据,然后使用该数据数组从另一个表中获取一些数据,然后将其作为 JSON 返回。
我已经尝试了一段时间,但我似乎无法弄清楚异步和等待。现在它可以完成一些工作,但在返回数据之前不会等待我在 for 循环中的第二个查询完成。
app.get("/get-top-trending", (request, response) => {
const req = request.query
let query = 'SELECT Ticker, Mentions FROM trend_data ORDER BY Date DESC, ' + req.by + ' DESC LIMIT 3';
let returnData = {};
cryptoDB.query(query, (err, tickers) => {
if (err) throw err;
getData(tickers).then(function() {
response.send(returnData)
});
});
async function getData(tickers) {
for (let i = 0; i < tickers.length; i++) {
cryptoDB.query('SELECT HistoricalJSON FROM historical_trend_data WHERE Ticker=? LIMIT 1', [tickers[i]['Ticker']], (err, rows2) => {
if (err) throw err;
returnData[tickers[i]['Ticker']] = rows2[0]['HistoricalJSON'];
});
}
}
});
我假设必须在 getData 异步函数中完成某些操作,但是我不太确定如何实现有效的解决方案。我尝试过承诺,但它们似乎没有按我预期的方式工作。
任何指导将不胜感激。
【问题讨论】:
标签: javascript mysql node.js