我想在功能块之外填充一个数组
app.get('/getpackages/:dateStart/:dateEnd/:limit', function (req, res) {
var xlsSourceFilesRetrievedTsdz = []
var xlsSourceFilesRetrievedSvn = []
var dateStart = req.params.dateStart;
var dateEnd = req.params.dateStart;
var limit = Number(req.params.limit);
let sql = 'SELECT * FROM summary_dz WHERE Start != "" AND Start BETWEEN ? AND ? LIMIT ?'
db.query(sql, [dateStart,dateEnd,limit], function (err, results) {
if (err) throw err;
for (const counter in results) {
xlsSourceFilesRetrievedTsdz.push(results[counter].XlsSourceFile);
}
// console.log(xlsSourceFilesRetrievedTsdz)
});
console.log(xlsSourceFilesRetrievedTsdz)
我要填写xlsSourceFilesRetrievedTsdz。我写的有什么问题吗?我得到一个空数组。注释中块内的 console.log 给出了想要的结果,如何从块外部获取?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这样做应该有效:
app.get('/getpackages/:dateStart/:dateEnd/:limit', async (req, res) => { var xlsSourceFilesRetrievedTsdz = [] var xlsSourceFilesRetrievedSvn = [] const promiseQuery = (sql, dateStart, dateEnd, limit) => { return new Promise((res, rej)=> { db.query(sql, [dateStart,dateEnd,limit], function (err, results) { if (err) rej(err); res(results) }); }) } const sql = 'SELECT * FROM summary_dz WHERE Start != "" AND Start BETWEEN ? AND ? LIMIT ?' const dateStart = req.params.dateStart; const dateEnd = req.params.dateStart; const limit = Number(req.params.limit); const results = await promiseQuery(sql, dateStart, dateEnd, limit) for (const counter in results) { xlsSourceFilesRetrievedTsdz.push(results[counter].XlsSourceFile); } console.log(xlsSourceFilesRetrievedTsdz) }我在这里所做的是将整个事情包装在一个 Promise 中并将其返回以等待结果。