PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Les requêtes de base de données asynchrones avec PostgreSQL dans Node ne fonctionnent pas

Le moyen le plus simple de saisir correctement la valeur du q variable dans une fermeture en JavaScript moderne consiste à utiliser forEach :

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

Si vous ne saisissez pas la valeur, votre code reflète la dernière valeur que q avait, comme la fonction de rappel exécutée plus tard, dans le contexte de la fonction contenante.

forEach , en utilisant une fonction de rappel isole et capture la valeur de q afin qu'il puisse être correctement évalué par le rappel interne.