Chamando procedimentos armazenados do MySQL a partir do Node.js

Resumo : neste tutorial, você aprenderá como chamar um procedimento armazenado no MySQL a partir de um aplicativo Node.js.

Este tutorial pega onde oO tutorial de exclusão de dados no MySQL do Node.js  foi interrompido.

As etapas para chamar um procedimento armazenado são semelhantes às etapas para executar uma consulta como segue:

  1. Conecte-se ao servidor de banco de dados MySQL.
  2. Chame o procedimento armazenado executando a CALL spNameinstrução. O spNameé o nome do procedimento armazenado.
  3. Feche a conexão com o banco de dados.

Chamando um exemplo de procedimento armazenado MySQL

Para demonstração, criamos um novo procedimento armazenado filterTodo para consultar linhas da todostabela com base no valor do completedcampo.

DELIMITER $$

CREATE PROCEDURE filterTodo(IN done BOOLEAN)
BEGIN
    SELECT * FROM todos WHERE completed = done;
END$$

DELIMITER ;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O procedimento armazenado filterTodorecupera linhas da todostabela dependendo do valor do doneargumento. Quando o doneargumento é verdadeiro, ele recupera todos os todos concluídos; Caso contrário, ele retorna todos incompletos.

Para chamar um procedimento armazenado, você usa a CALLinstrução. Por exemplo, para chamar o filterTodoprocedimento armazenado, execute a seguinte instrução:

CALL filterTodo(false);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A instrução retorna o seguinte conjunto de resultados:

+----+------------------------------------+-----------+
| id | title                              | completed |
+----+------------------------------------+-----------+
|  2 | Insert a new row with placeholders |         0 |
|  3 | Master Node.js MySQL               |         0 |
+----+------------------------------------+-----------+
2 rows in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

O stored_procedure.jsprograma a seguir chama o filterTodoprocedimento armazenado e retorna o conjunto de resultados:

let mysql = require('mysql');

let connection = mysql.createConnection({
  host: process.env.DB_HOST,
  port: process.env.DB_PORT,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
});

connection.connect((err) => {
  if (err) return console.error(err.message);

  let sql = `CALL filterTodo(?)`;

  connection.query(sql, [false], (error, results, fields) => {
    if (error) return console.error(error.message);

    console.log(results);
  });

  // close the database connection
  connection.end();
});
Linguagem de código:  JavaScript  ( javascript )

Como funciona.

Primeiro, importe o mysqlmódulo:

let mysql = require('mysql');Linguagem de código:  JavaScript  ( javascript )

Segundo, crie uma conexão com o banco de dados MySQL usando o createConnectionmétodo:

let connection = mysql.createConnection({
  host: process.env.DB_HOST,
  port: process.env.DB_PORT,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
});Linguagem de código:  JavaScript  ( javascript )

Observe que recuperamos os parâmetros de conexão (host, porta, usuário, senha e banco de dados) das variáveis ​​de ambiente usando .env.

Terceiro, conecte-se ao banco de dados MySQL:

connection.connect((err) => {
  if (err) return console.error(err.message);
});Linguagem de código:  JavaScript  ( javascript )

Este código verifica se há algum erro e o exibe.

Quarto, defina uma consulta SQL que chame o filterTodoprocedimento armazenado:

let sql = `CALL filterTodo(?)`;Linguagem de código:  JavaScript  ( javascript )

Quinto, especifique os dados usados ​​na consulta:

let data = [false];Linguagem de código:  JavaScript  ( javascript )

Neste caso, o espaço reservado ?na consulta SQL será substituído por false.

Sexto, execute a consulta SQL usando o querymétodo:

connection.query(sql, [false], (error, results, fields) => {
  if (error) return console.error(error.message);

  console.log(results);
});Linguagem de código:  JavaScript  ( javascript )

Este código executa a consulta e exibe o número de linhas afetadas.

Por fim, feche a conexão com o banco de dados:

connection.end();Linguagem de código:  CSS  ( css )

Neste tutorial, você aprendeu como chamar um procedimento armazenado no MySQL a partir de um programa Node.js.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *