Maison > base de données > tutoriel mysql > Comment puis-je enchaîner correctement les promesses dans Node.js lorsque je travaille avec des requêtes de base de données ?

Comment puis-je enchaîner correctement les promesses dans Node.js lorsque je travaille avec des requêtes de base de données ?

Mary-Kate Olsen
Libérer: 2024-11-14 09:30:02
original
334 Les gens l'ont consulté

How Can I Chain Promises Correctly in Node.js When Working with Database Queries?

Problèmes de promesse et de connexion

Dans ce code Node.js, une promesse est attendue pour attendre la fin de la fonction findUser, qui ce n'est pas le cas. Le problème provient de l'exécution asynchrone des requêtes de base de données.

Fonction de rappel de connexion

Dans findUser, une connexion à la base de données est établie à l'aide de pool.getConnection. Cette fonction prend une fonction de rappel comme argument, qui est appelée lorsque la connexion est prête. Cependant, le code renvoie incorrectement des données dans ce rappel, ce qui entraîne le renvoi d'un élément avant la fin de la requête.

Pour résoudre ce problème, la fonction findUser doit transmettre un rappel à pool.getConnection qui résout ou rejette une promesse, indiquant si la requête a réussi ou non.

Chaînage des promesses

L'utilisation de promesses permet d'exécuter le code de manière séquentielle. Dans le code fourni, la première promesse doit être chaînée à la promesse suivante en utilisant then au lieu des fonctions de rappel, comme indiqué ci-dessous :

promise.then(function(rows) {
    return new Promise(function (resolve, reject) {
        loginC.doSomething(data);

        if (success) {
            resolve(data);
        } else {
            reject(reason);
        }
    });
}, function(reason) {
    console.log("error handler second");
});
Copier après la connexion

Gestion des erreurs

Le La raison pour laquelle le message « gestionnaire d'erreurs deuxième » est affiché est qu'une erreur se produit lorsque la connexion à la base de données échoue. La gestion des erreurs dans l'écouteur d'événement connection.on('error') n'est pas utilisée correctement. Cette erreur se propage à la fonction findUser et est capturée par le deuxième gestionnaire d'erreurs du chaînage.

La fonction findUser doit rejeter la promesse avec le message d'erreur, qui sera ensuite propagé au gestionnaire d'erreurs dans la chaîne de promesse. .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal