Utilizando SQL Server com Node.js

E aí galera! Tudo certo?

Hoje vou falar mais um pouco sobre Node.js, especificamente sobre acesso ao banco de dados SQL Server, basicamente, como no post anterior, sobre o uso do PostgreSQL vou demonstrar como consultar o banco através de Stored Procedures.

E já parafraseando o post anterior, repito a minha colocação, caso você pense que ninguém mais utiliza procedures: “Aí que você se engana, muita gente ainda utiliza esse poderoso recurso do banco de dados, e é por isso que surgiu esse conteúdo!”

Para fazer o acesso ao banco, vamos utilizar um pacote chamado smn-sqlque é mantido pela empresa SMN e está disponível pra nós no npm.

O smn-sql não é um mero “chamador de procedures”, ele também tem várias outras utilidades, dentre elas:

  • Utilização de parâmetros Input;
  • Utilização de parâmetros Output/Return;
  • Controle de transação;
  • Utilização e criação de tipos “Table”;

Então para começar, vamos instalar o SMN-SQL utilizando o seguinte comando:

npm install smn-sql

Feito isso, podemos iniciar a nossa brincadeira. O primeiro passo é preencher o objeto de configuração com o banco de dados para posteriormente utilizarmos na requisição do pacote, como no exemplo a seguir:


let config = {
user: 'username',
password: 'senha',
server: 'servidor',
database: 'database',
options: {
encrypt: true //Caso esteja utilizando o SQL no Azure, utilize este parâmetro 🙂
}
};
const sql = require("smn-sql")(config);

Agora, vamos aos exemplos! Tomando como base, que temos a seguinte procedure em nosso banco de dados:


CREATE PROCEDURE BuscarUsuario
@Nome varchar(50),
@NomeDaMae varchar(50)
AS
BEGIN
SELECT u.Id,
u.Nome,
u.NomeDaMae
FROM Usuario u
WHERE u.Nome LIKE @Nome
AND u.NomeDaMae LIKE @NomeDaMae
END
GO

Podemos executá-la com o seguinte comando:


sql.request()
.input('Nome', 'Gustavo')
.input('NomeDaMae', 'Joana')
.execute('BuscarUsuario', (err, recordset) => {
if(err)
return console.log(err);
console.log(recordset);
});

view raw

smnsqlexec.js

hosted with ❤ by GitHub

E caso quisermos utilizar transação, podemos fazer da seguinte maneira:


let transaction = sql.transaction();
transaction.begin((err) = > {
if(err)
return console.log(err);
sql.request(transaction)
.input('Nome', 'Gustavo')
.input('NomeDaMae', 'Joana')
.execute('BuscarUsuario', (err, recordset) => {
//Se acontecer algum erro, ROLLBACK na transaction
if(err) {
transaction.rollback(() => {
console.log(err);
});
//Caso contrário, COMMIT
} else {
transaction.commit(() => {
console.log(recordset);
});
}
});
})

O resultado das procedures é o seguinte:
resultadosql

O resultado da consulta pode ser recuperado utilizando “recordset[0]”, que é a primeira posição de um array de informações sobre a consulta.

Fácil, não?

O código do pacote está disponível para sugestões, alterações e melhorias no GitHub, em: https://github.com/smn-official/smn-sql

Por hoje é só, qualquer dúvida ou sugestão, estou à disposição! Até mais 😀

Advertisement

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s