sql >> Databasteknik >  >> RDS >> PostgreSQL

Asynkrona databasfrågor med PostgreSQL i Node fungerar inte

Det enklaste sättet att korrekt fånga värdet på q variabel i en stängning i modern JavaScript är att använda forEach :

queries.forEach(function(q) {
    client.query(q[0], function(err, result) {
      if(err) {
        console.log(err);
      } else {
        q[1](result);
      }
    });
 });

Om du inte fångar värdet återspeglar din kod det sista värdet som q hade, som återuppringningsfunktionen som exekveras senare, i sammanhanget med den innehållande funktionen.

forEach , genom att använda en återuppringningsfunktion isolerar och fångar värdet på q så att det kan utvärderas korrekt genom den inre återuppringningen.



  1. Symfony 3.4 Inga metadataklasser att bearbeta Fel

  2. MySQL-anslutning ger nollreferens

  3. ORA-12519 TNS:ingen lämplig servicehanterare hittades

  4. MySQL COUNT DISTINKT