Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Conexão SQL Server + mssql + connectionFactory

Prezados,

Acredito que meu problema seja nos callbacks. A verdade é que ainda tenho dificuldade no fluxo do javascript, pois considero o raciocínio um pouco diferente do C# que minha linguagem primária.

Estou tentando segregar as funcionalidade por arquivos para me habituar com o node, porem estou tendo problemas. Por exemplo:

Criei 3 arquivos bem parecidos com as aulas.

connectionFactory.js

ComponentDAO.js

App.js

Apresentado o código, vamos ao erro.

Não estou sabendo como resolver no meu contexto, mas me parece que eu deveria passar algo como callback.

Poderiam me auxiliar?

Grato.

4 respostas

Tem um problema no seu connectionFactory. Ele deve retornar um mysql.createConnection(configs); e ai deste retorno voce faz um conn.connect. O outro problema é que no seu app.js ao importar o dbConnection ele é uma funcao entao deve ser chamado.


Exemplo:

connectionFactory.js

var mysql  = require('mysql');

function createDBConnection() {
        return mysql.createConnection({
            host: 'localhost',
            user: 'root',
            password: '',
            database: 'banco_qualquer'
        });
}

module.exports = function() {
    return createDBConnection;
}

App.js

...
app.get('/', function(req, res) {

    var conn = dbConnection();
    var objDao = new ComponentDao(conn);
})
...

Para ajudar a te ajudar, recomendo postar em texto o código. Fica mais fácil pro ctrl c ctrl v

Obrigado pela ajuda.

Vou verificar o dbConnection.

Quanto ao restante, estou me conectado ao SQL Server e não ao MySql...

Abs.

solução!

Aaa foi mal nem reparei.

Vendo a documentação do mssql, você deve utilizar uma função assíncrona. O que explica o erro dizendo que não está conectado, ja que a query está sendo executada antes.

var mssql  = require('mssql');

async function createDBConnection() {
    var config = { ... };
    return await mssql.connect(config);
}

module.exports = function() {
    return createDBConnection;
}
...
app.get('/', function(req, res) {

    ...
    var conn = await dbConnection();

    ...
})
...

O mesmo deve ser feito quando for fazer uma query no DAO

Brother, vc é o cara.

Dito e feito.

Obrigado.