Bonjour, je suis nouveau dans node js et j'ai vraiment besoin d'aide 😦

Ici, j'ai besoin d'avoir accès à la requête de résultat pour une boucle for après cela, mais ma variable firstresult ne change pas en dehors de la boucle de requête.

Comment puis-je le faire?

db.query("SELECT * FROM film", function (err, result) {
if (err) throw err;

firstresult=result
});
console.log(firstresult) ///AFFICHE undefined```

4 réponses


Hello, il faut que tu déclares la variable en dehor de ta callback, let firstresult

let firstresult

db.query("SELECT * FROM film", function (err, result) {
    if (err) throw err

    firstresult=result
});

console.log(firstresult)
Ébyu _
Auteur

Salut, j'ai déjà essayé de déclarer la variable avant, mais elle m'affiche toujours undefined

L'énorme problème des callbacks d'accès à une BDD, c'est qu'il met le traitement dans la pile d'exécution et passe à la suite, tu te retrouves dans un cas où il fait ton console.log. avant ton callback.

Est-ce que ta bibliothèque d'accès à ta BDD utilise aussi des Promise ?
Si c'est le cas, passe par les promesses.

Tu pourrais avoir quelque chose comme ça :

const getFilms = async () => {
    let firstresult

    try {
      const result = await db.query("SELECT * FROM film");
    } catch (err) {
        // Gestion de l'erreur
    }

      console.log(result)
}

Ah oui j'avais oublié ce problème de JS, quand il y a une verif avant une action faut touujorus passer en async/await :x