Maison > Questions et réponses > le corps du texte
Je souhaite remplir un tableau en dehors du bloc fonctionnel
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)
Je veux le remplirxlsSourceFilesRetrievedTsdz
. Y a-t-il quelque chose qui ne va pas dans ce que j'ai écrit ? J'obtiens un tableau vide. Le console.log à l'intérieur du bloc dans le commentaire donne le résultat souhaité, comment puis-je l'obtenir depuis l'extérieur du bloc ?
P粉7594574202024-02-22 11:05:55
Cela devrait fonctionner :
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) }
Ce que j'ai fait ici, c'est d'envelopper le tout dans une promesse et de la retourner en attendant le résultat.