Maison > interface Web > Questions et réponses frontales > Comment faire des requêtes synchrones dans Node.js

Comment faire des requêtes synchrones dans Node.js

PHPz
Libérer: 2023-04-07 10:35:01
original
832 Les gens l'ont consulté

Dans Node.js, des requêtes de base de données sont souvent requises. L'interrogation de la base de données est une opération d'E/S et les appels asynchrones sont généralement utilisés pour éviter de bloquer d'autres événements. Cependant, dans certains cas, nous devons effectuer des requêtes synchrones. Cet article explique comment effectuer des requêtes synchrones dans Node.js.

1. Requête asynchrone Node.js

Normalement, Node.js utilise une requête asynchrone pour éviter de bloquer d'autres événements. Par exemple, nous pouvons utiliser le pool de connexions mysql de Node.js pour exécuter des requêtes asynchrones, comme indiqué ci-dessous :

const mysql = require('mysql');
const pool = mysql.createPool({
  host: 'localhost',
  user: 'username',
  password: 'password',
  database: 'database_name'
});

function asyncQuery(sql, values, callback) {
  pool.getConnection(function(err, connection) {
    if (err) {
      return callback(err);
    }
    connection.query(sql, values, function(err, results) {
      connection.release();
      if (err) {
        return callback(err);
      }
      callback(null, results);
    });
  });
}
Copier après la connexion

Dans le code ci-dessus, la fonction asyncQuery exécutera une requête asynchrone et transmettra les résultats via le la fonction de rappel revient. asyncQuery函数将会执行异步查询,并将结果通过回调函数返回。

二、Node.js同步查询

在某些情况下,我们需要以同步的方式执行SQL查询,例如在初始化时需加载数据库内容。在Node.js中,可以使用sync-mysql模块来实现同步查询。sync-mysql模块将自动为每个查询创建一个新的连接,并延迟关闭连接,以便允许连接复用。以下是一个同步查询的例子:

const SyncMySQL = require('sync-mysql');
const connection = new SyncMySQL({
  host: 'localhost',
  user: 'username',
  password: 'password',
  database: 'database_name'
});

try {
  const rows = connection.query('SELECT * FROM users');
  console.log(rows);
} catch (err) {
  console.error(err);
}
Copier après la connexion

在上面的代码中,我们创建了一个SyncMySQL连接,使用query方法执行查询,并将结果存储在rows变量中。如果发生错误,将会通过catch

2. Requête synchrone Node.js

Dans certains cas, nous devons exécuter des requêtes SQL de manière synchrone, comme le chargement du contenu de la base de données lors de l'initialisation. Dans Node.js, vous pouvez utiliser le module sync-mysql pour implémenter des requêtes synchrones. Le module sync-mysql créera automatiquement une nouvelle connexion pour chaque requête et retardera la fermeture de la connexion pour permettre la réutilisation de la connexion. Voici un exemple de requête synchrone :

rrreee

Dans le code ci-dessus, nous créons une connexion SyncMySQL, exécutons la requête à l'aide de la méthode query et stockons les résultats. dans la variable lignes. Si une erreur se produit, l'erreur sera capturée via l'instruction catch et le message d'erreur sera affiché.

Il convient de noter que les requêtes synchrones peuvent bloquer d'autres événements dans l'application, utilisez donc des requêtes synchrones uniquement lorsque cela est nécessaire. Si vous devez exécuter plusieurs requêtes, il est préférable d'utiliser des appels asynchrones. 🎜🎜Conclusion🎜🎜Lorsque vous effectuez des requêtes de base de données dans Node.js, il est courant d'utiliser des requêtes asynchrones pour éviter de bloquer d'autres événements. Cependant, dans certains cas, comme lors de l'initialisation, nous devons effectuer des requêtes synchrones. Cet article explique comment effectuer des requêtes synchrones dans Node.js. J'espère qu'il vous sera utile. 🎜

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal