Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée de la gestion des exceptions de base de données dans NodeJs

小云云
Libérer: 2018-01-03 11:28:50
original
1897 Les gens l'ont consulté

Cet article présente principalement une brève discussion sur la gestion des exceptions de base de données dans NodeJs. L'éditeur pense que c'est assez bon, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un œil. J'espère que cela pourra aider tout le monde.

Version de NodeJs : 4.4.4

Erreur de lien de base de données

L'utilisation de nodejs pour gérer les exceptions est la plus gênante, mais ici j'ignorerai celles-ci fourni par nodejsdomainEt certaines bibliothèques tierces gèrent spécifiquement les choses. L'exploitation de la base de données est une fonction couramment utilisée pour nous. Grâce aux rappels, nous aurons beaucoup d'erreurs ici.

est le suivant :


var pool = require('../db.js');
var runtimeLog = require('../log.js').getLogger('runlog');
var Promise = require('bluebird');

function queryPromise(queryString) {
  return new Promise(function(resolve, reject) {
    pool.getConnection(function(err, connection) {
    
      //connection.query(queryString, function(err, rows, fields) {
        
      // if (!err) {
      //   resolve(rows);
      //  } else {
      //   runtimeLog.error(err)
      //   reject(err)
      //  }
      // connection.release();
      //});
    })
  })
}

module.exports = function() {
  return new Promise(function(resolve, reject) {

    queryPromise("select * from wb123_home_map GROUP BY onestair")
      .then(function(results){
        resolve(results);

      })
      .catch(function(err){
        runtimeLog.error(err)
      })
  })
}
Copier après la connexion

Vous pouvez voir qu'il y a une possibilité d'erreur dans les deux rappels.

Et ceci est un module, nous l'avons exporté.

Ici, nous remplissons délibérément le mauvais numéro de port pour la connexion à la base de données, en l'écrivant comme 330666 :


module.exports = {
  host:   '192.168.6.101',
  database: 'web123',
  user:   'root',
  password: 'passw0rd',
  protocol: 'mysql',
  port:   '330666',
  query:  {pool: true}
}
Copier après la connexion

Dans ce cas, lorsque nous nous connectons à la base de données, ce sera quelque chose qui s'est mal passé.

Ici, nous utilisons promise, donc dans la fonction exportée, nous utilisons catch, qui détectera l'erreur dans la fonction queryPromise et l'imprimera dans le journal.


[2017-01-05 13:27:59.648] [ERROR] runlog - [err] [RangeError: port should be >= 0 and < 65536: 330666]
RangeError: port should be >= 0 and < 65536: 330666
...
Copier après la connexion

Erreur d'instruction SQL de base de données

Modifions le code, remplissons correctement le lien de la base de données, et modifier le SQL L'instruction est une instruction incorrecte.


var pool = require(&#39;../db.js&#39;);
var runtimeLog = require(&#39;../log.js&#39;).getLogger(&#39;runlog&#39;);
var Promise = require(&#39;bluebird&#39;);

function queryPromise(queryString) {
  return new Promise(function(resolve, reject) {
    pool.getConnection(function(err, connection) {
      
      connection.query(queryString, function(err, rows, fields) {
        //if (err) throw err;
        if (!err) {
          resolve(rows);
         } else {
          reject(err)
         }
        connection.release();
      });
    })
  })
}

module.exports = function() {
  return new Promise(function(resolve, reject) {

    queryPromise("select * from wb123_home_map GROUP BY onestairs")
      .then(function(results){
        resolve(results);

      })
      .catch(function(err){
        runtimeLog.error(&#39;[err]&#39;,err)
      })
  })
}
Copier après la connexion

Message d'erreur :


[2017-01-05 14:40:14.518] [ERROR] runlog - [err] { [Error: ER_BAD_FIELD_ERROR: Unknown column &#39;onestairs&#39; in &#39;group statement&#39;]
 code: &#39;ER_BAD_FIELD_ERROR&#39;,
 errno: 1054,
 sqlState: &#39;42S22&#39;,
 index: 0 }
Error: ER_BAD_FIELD_ERROR: Unknown column &#39;onestairs&#39; in &#39;group statement&#39;
  at Query.Sequence._packetToError (E:\zz\zz_wb123\manage\trunk\code\nod
....
Copier après la connexion

Vous pouvez voir que des erreurs sont générées via catch.

Donc, si Promise est utilisé, nous pouvons intercepter l'exception lancée ci-dessous directement dans le catch. Il n'est pas nécessaire de consigner les exceptions dans la fonction queryPromise.

Voici une séance de questions-réponses très utile sur le stackoverflow node-js-best-practice-exception-handling

Recommandations associées :

À propos de la solution à la mémoire insuffisante causé par la base de données de requêtes PHP

Que dois-je faire si l'erreur système 1067 se produit dans la version verte de la base de données Mysql ?

Explication détaillée de la base de données MySQL (ubuntu 14.0.4 LTS 64)

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!