Neste artigo será abordado o acesso ao banco de dados MySQL. O NodeJs não possui um acesso nativo ao banco de dados por este motivo será utilizado um módulo externo.
Qual será a implementação?
Criação de exemplos que abrangem o CRUD.
Configuração
Para iniciar a implementação será necessário a instalação do módulo externo node-mysql
.
- Crie uma pasta para exemplo
- Abra o terminal / console na pasta criada e digite o comando abaixo.
npm install mysql
Será necessário executar o script para criação da tabela que será utilizada no acesso ao banco de dados.
CREATE DATABASE IF NOT EXISTS `test`;
CREATE TABLE IF NOT EXISTS `test`.`message` (
`id` INT NOT NULL,
`text` VARCHAR(255) NULL,
PRIMARY KEY (`id`));
(C) Create
Representa a criação de um registro na tabela, o comando INSERT do SQL realiza esta operação.
var mysql = require('mysql');
var connection = mysql.createConnection({});
connection.connect();
connection.query('INSERT INTO `test`.`message` (id, text) VALUES (1, \'Hello\')', function(err, rows, fields) {
console.log('It works!');
connection.end();
});
(R) Read
Representa o retorno de dados, o comando SELECT do SQL realiza esta operação.
var mysql = require('mysql');
var connection = mysql.createConnection({});
connection.connect();
connection.query('SELECT id, text from `test`.`message`', function(err, rows, fields) {
console.log('It works!');
connection.end();
});
(U) Update
Representa a atualização de dados, o comando UPDATE do SQL, realiza esta operação.
var mysql = require('mysql');
var connection = mysql.createConnection({});
connection.connect();
connection.query('UPDATE `test`.`message` set text = text \'123\' where id = 1', function(err, rows, fields) {
console.log('It works!');
connection.end();
});
(D) Delete
Representa a exclusão de dados, o comando DELETE do SQL, realiza esta operação.
var mysql = require('mysql');
var connection = mysql.createConnection({});
connection.connect();
connection.query('DELETE FROM `test`.`message` where id = 1', function(err, rows, fields) {
console.log('It works!');
connection.end();
});
Implementação (Final)
connection.js
var util = require('util');
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '<<yourpassword>>',
database : 'test'
});
module.exports = {
//
// Conecta com o banco de dados
//
openConnection: function openConnection(){
connection.connect();
},
//
// Executa Query
//
runQuery: function runQuery(sql, callback) {
connection.query(sql, function(err, rows, fields) {
if (err){
console.error(sql);
throw err;
}
callback(err, rows, fields);
});
},
//
// TRUNCATE
//
truncateData: function truncateData(callback) {
var sql = 'TRUNCATE `test`.`message`';
this.runQuery(sql, callback.bind(this));
},
//
// CREATE
//
createData: function createData(model, callback) {
var sql = util.format('INSERT INTO `test`.`message` (id, text) VALUES (%s, \'%s\')', model.id, model.text);
this.runQuery(sql, callback.bind(this));
},
//
// READ
//
readData: function readData(callback) {
var sql = 'SELECT id, text FROM `test`.`message`';
this.runQuery(sql, callback.bind(this));
},
//
// UPDATE
//
updateData: function updateData(model, callback) {
var sql = util.format('UPDATE `test`.`message` set text = concat(text, \'123\') where id = %s', model.id);
this.runQuery(sql, callback.bind(this));
},
//
// DELETE
//
deleteData: function deleteData(model, callback) {
var sql = util.format('DELETE FROM `test`.`message` where id = %s', model.id);
this.runQuery(sql, callback.bind(this));
},
//
// CLOSE CONNECTION
//
closeConnection: function closeConnection(model, callback) {
connection.end();
}
};
index.js
var util = require('util');
var connection = require('./connection');
var model = {
id: 1,
text: util.format('Hello %s', Math.floor((Math.random() * 100) + 1))
};
connection.openConnection();
connection.truncateData(function(){
connection.createData(model, function(err, rows, fields){
console.log('1. Criação executada!, (%s) linha(s) afetada(s)!', rows.affectedRows);
connection.updateData(model, function(err, rows, fields){
console.log('2. Atualização executada!, (%s) linha(s) afetada(s)!', rows.affectedRows);
connection.readData(function(err, rows, fields){
console.log('3. Leitura executada!', JSON.stringify(rows));
connection.deleteData(model, function(err, rows, fields){
console.log('4. Exclusão executada, (%s) linha(s) afetada(s)!', rows.affectedRows);
connection.closeConnection();
});
});
});
});
});
Código Fonte: GitHub
Execução!
Digite o comando abaixo na pasta do projeto para execução!
node index.js
Fim!
Prontos para acessar o banco de dados MySQL ?
Até a próxima.