Problème programmation en Node JS

Par Ébyu _, il y a 3 ans


Javascript NodeJS

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

popotte, il y a 3 ans

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 _, il y a 3 ans

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

Kareylo, il y a 3 ans

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) }
popotte, il y a 3 ans

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