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```
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)
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