suchen

Heim  >  Fragen und Antworten  >  Hauptteil

So füllen Sie ein Array außerhalb der Funktionsklausel in NodeJS

Ich möchte ein Array außerhalb des Funktionsblocks füllen

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)

Ich möchte es ausfüllenxlsSourceFilesRetrievedTsdz. Stimmt etwas mit dem, was ich geschrieben habe, nicht? Ich erhalte ein leeres Array. Das console.log innerhalb des Blocks im Kommentar liefert das gewünschte Ergebnis. Wie kann ich es von außerhalb des Blocks erhalten?

P粉714844743P粉714844743323 Tage vor488

Antworte allen(1)Ich werde antworten

  • P粉759457420

    P粉7594574202024-02-22 11:05:55

    这样做应该有效:

    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 中并将其返回以等待结果。

    Antwort
    0
  • StornierenAntwort