Promise API - Node.js
O driver MySQL2 permite o uso de Promise ao executar consultas no banco de dados. Por exemplo:
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb2",
password: "123456"
}).promise();
// obtenção de objetos
connection.query("SELECT * FROM users")
.then(result => {
console.log(result);
})
.catch(err => {
console.log(err);
});
Para criar uma Promise ao criar o objeto connection, o método promise()
query()
then()
catch()
Se ocorrer um erro durante a execução da consulta, o método catch()
Se a consulta for bem-sucedida, o método then()
Para a instrução SELECT
connection.query("SELECT * FROM users")
.then(result => {
console.log(result[0]);
})
.catch(err => {
console.log(err);
});
Ou assim:
connection.query("SELECT * FROM users")
.then(([rows, fields]) => {
console.log(rows);
})
.catch(err => {
console.log(err);
});
O output no console em ambos os casos será algo como:
C:\node\mysqlapp> node app.js [ TextRow { id: 2, name: 'Tom', age: 34 }, TextRow { id: 4, name: 'Alice', age: 25 }, TextRow { id: 5, name: 'Kate', age: 28 }, TextRow { id: 6, name: 'Tim', age: 22 }, TextRow { id: 7, name: 'Tom', age: 34 }, TextRow { id: 8, name: 'Helen', age: 28 }, TextRow { id: 9, name: 'Bill', age: 25 } ]
Se a instrução SQL for INSERT
UPDATE
DELETE
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb2",
password: "123456"
}).promise();
const sql = "INSERT INTO users (name, age) VALUES (?, ?)";
const user = ["Stan", 19];
connection.query(sql, user)
.then(result => {
console.log(result[0]);
})
.catch(err => {
console.log(err);
});
O resultado da consulta é um array de dois objetos, onde o primeiro elemento descreve os resultados da operação. Neste caso, o output no console será algo como:
C:\node\mysqlapp> node app.js ResultSetHeader { fieldCount: 0, affectedRows: 1, insertId: 11, info: '', serverStatus: 2, warningStatus: 0 }
Por exemplo, com a propriedade affectedRows
Tudo o que foi mencionado sobre o método query()
execute()
connection.execute("SELECT * FROM users")
.then(([rows, fields]) => {
console.log(rows);
})
.catch(err => {
console.log(err);
});