5
respostas

Conectar com o node com o SQL Server

Estou usando o codigo abaixo para tentar conectar com o SQL server, mas ele volta o erro: TypeError: connection.query is not a function

Alguem tem alguma ideia do que possa ser ?

module.exports = function(app){
    app.get('/login', function(req, res){
        var sql = require('mssql');
        var connection = sql.connect({
            user: "MeuUsuario",
            password: "senhaUsuario",
            database: "cliente",
            server: "svr11.ravehost.com.br"
        });

        connection.query('select * from dbo.usuarioGet', function(err, results){
            res.send(results);    
        });                
    });
};
5 respostas

O curso é feito através do MySQL e não do SQL Server.

Sabendo disto, é perceptível que haja alterações nos comandos. Qual pacote do SQL Server você instalou?

OBS: Sugiro olhar a documentação do pacote instalado.

Estou usando o SQL Server Express 2014 .... no MySql funciona bem , estava tentando ampliar e rodar tbm com outro banco rs ...

Achei algumas coisas bem legais , acho que vai funcionar: https://docs.microsoft.com/pt-br/sql/connect/node-js/step-3-proof-of-concept-connecting-to-sql-using-node-js

Obrigado pela ajuda

Bruno, se não me engano o Professor instala o pacote do MySQL através do NPM, desta maneira:

npm install mysql

Se você quiser usar o Sql Server, é necessário instalar o pacote correto.

Através deste link que você mandou, eles estão usando o tedious para fazer a conexão.

Recomendo você entrar no Github - Tedious e selecionar o seu S.O para visualizar um tutorial e fazer a conexão corretamente.


Existe também o mssql. Caso queira dar uma olhada.

Vou complementar a resposta dele. Seu código está errado. Para exportar uma função diretamente a gente exporta de outro jeito

// sua função não tem nome
module.exports = function(app){ 
    app.get('/login', function(req, res){
        var sql = require('mssql');
        var connection = sql.connect({
            user: "MeuUsuario",
            password: "senhaUsuario",
            database: "cliente",
            server: "svr11.ravehost.com.br"
        });

        connection.query('select * from dbo.usuarioGet', function(err, results){
            res.send(results);    
        });                
    });
};

Não pode ser exportada uma função anônima, por que o NodeJS não tem como referenciar ela lá fora. O mais correto é fazer assim

module.exports = {
  Login: function(app){ 
    app.get('/login', function(req, res){
        var sql = require('mssql');
        var connection = sql.connect({
            user: "MeuUsuario",
            password: "senhaUsuario",
            database: "cliente",
            server: "svr11.ravehost.com.br"
        });

        connection.query('select * from dbo.usuarioGet', function(err, results){
            res.send(results);    
        });                
    });
};

Perceba que agora eu estou colocando um nome nela dentro de um objeto.

Para exportar ela de uma maneira mais compreensível, você~e pode fazer assim:

exports.login =  function(app){ 
    app.get('/login', function(req, res){
        var sql = require('mssql');
        var connection = sql.connect({
            user: "MeuUsuario",
            password: "senhaUsuario",
            database: "cliente",
            server: "svr11.ravehost.com.br"
        });

        connection.query('select * from dbo.usuarioGet', function(err, results){
            res.send(results);    
        });                
    });
};

Aqui, eu estou exportando a variável diretamente com uma função anônima dentro dela

Por isso seu código não funcionava. Para mais informações sobre isso, tem um guia super bacana aqui:

https://www.sitepoint.com/understanding-module-exports-exports-node-js/

Pra te falar a verdade, eu ainda criaria um controller pra isolar a requisição das rotas e tornar o código mais modulável ainda, mas se quiser saber como fazer isso, pode avisar que eu te ajudo depois com um tutorial mais completo :)