Operações Básicas com Dados - Node.js
Todas as operações com dados se baseiam em comandos SQL. Vamos resumir as operações básicas com bancos de dados.
Criando um Banco de Dados
Vamos criar um banco de dados no servidor MySQL usando Node.js:
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
password: "123456"
});
connection.query("CREATE DATABASE usersdb2", function(err, results) {
if (err) console.log(err);
else console.log("Banco de dados criado");
});
connection.end();
Neste caso, é criado o banco de dados usersdb2
CREATE DATABASE
Criando uma Tabela
Agora, vamos adicionar uma tabela ao banco de dados usersdb2
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb2",
password: "123456"
});
const sql = `CREATE TABLE IF NOT EXISTS users(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
age INT NOT NULL
)`;
connection.query(sql, function(err, results) {
if (err) console.log(err);
else console.log("Tabela criada");
});
connection.end();
Para criar a tabela, usamos o comando CREATE TABLE
users
id
name
age
Adicionando Dados
Para adicionar dados, usamos o comando SQL INSERT
users
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb2",
password: "123456"
});
const sql = `INSERT INTO users(name, age) VALUES('Sam', 31)`;
connection.query(sql, function(err, results) {
if (err) console.log(err);
console.log(results);
});
connection.end();
Aqui, é adicionada uma linha à tabela, onde a coluna name
age
results
C:\node\mysqlapp> node app.js ResultSetHeader { fieldCount: 0, affectedRows: 1, insertId: 1, info: '', serverStatus: 2, warningStatus: 0 }
Neste exemplo, podemos ver que é retornado um objeto, com várias propriedades importantes. Em primeiro lugar, affectedRows
insertId
id
id
connection.query(sql, function(err, results) {
if (err) console.log(err);
console.log(results.insertId);
});
Adicionando Múltiplos Valores
Agora, vamos adicionar vários valores de uma só vez:
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb2",
password: "123456"
});
const users = [
["Bob", 22],
["Alice", 25],
["Kate", 28]
];
const sql = `INSERT INTO users(name, age) VALUES ?`;
connection.query(sql, [users], function(err, results) {
if (err) console.log(err);
console.log(results);
});
connection.end();
Ao adicionar múltiplos valores, no comando SQL após VALUES
E, ao adicionar com sucesso, a propriedade results.affectedRows
C:\node\mysqlapp> node app.js ResultSetHeader { fieldCount: 0, affectedRows: 3, insertId: 3, info: 'Records: 3 Duplicates: 0 Warnings: 0', serverStatus: 2, warningStatus: 0 }
No entanto, neste caso, devemos ter em mente que não será possível obter os id
Retornando Dados
Para retornar dados, usamos o comando SQL SELECT
users
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb2",
password: "123456"
});
const sql = `SELECT * FROM users`;
connection.query(sql, function(err, results) {
if (err) console.log(err);
console.log(results);
});
connection.end();
O objeto results na função de callback representará um array com os dados obtidos do banco de dados:
C:\node\mysqlapp> node app.js
[ TextRow { id: 1, name: 'Sam', age: 31 },
TextRow { id: 2, name: 'Tom', age: 29 },
TextRow { id: 3, name: 'Bob', age: 22 },
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: 25 }]
Após obter esses dados, podemos trabalhar com eles como um array comum de objetos. Por exemplo, vamos exibir apenas o nome de cada usuário do banco de dados:
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb2",
password: "123456"
});
const sql = "SELECT * FROM users";
connection.query(sql, function(err, results) {
if (err) console.log(err);
const users = results;
for (let i = 0; i < users.length; i++) {
console.log(users[i].name);
}
});
connection.end();
A saída no console será:
C:\node\mysqlapp> node app.js ResultSetHeader { fieldCount: 0, affectedRows: 2, insertId: 0, info: 'Rows matched: 2 Changed: 2 Warnings: 0', serverStatus: 34, warningStatus: 0, changedRows: 2 }
Com a propriedade affectedRows
results
Removendo Dados
Para remover dados, usamos o comando SQL DELETE
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb2",
password: "123456"
});
const sql = "DELETE FROM users WHERE name=?";
const data = ["Sam"]; // removendo usuários com o nome "Sam"
connection.query(sql, data, function(err, results) {
if (err) console.log(err);
console.log(results);
});
connection.end();
A saída no console será:
C:\node\mysqlapp> node app.js ResultSetHeader { fieldCount: 0, affectedRows: 1, insertId: 0, info: '', serverStatus: 34, warningStatus: 0 }
Com isso, o usuário com o nome "Sam" será removido da tabela users