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

TypeError: Cannot read property 'query' of undefined

Pessoal por gentileza será que algúem poderia me ajudar.... Estou tendo o erro "TypeError: Cannot read property 'query' of undefined" quando tento buscar a Url "http://localhost:3000/notas/nota/1". Já vi algumas dúvidas no fórum mas as respostas não adiantaram pra mim.

Segue meu código:

connectionFactory.js:

var firebird = require('node-firebird');


function createDBConnection(){

    var options = {};

    options.host = '*********';
    options.port = 3050;
    options.database = 'ERP.fdb';
    options.user = '*';
    options.password = '*';
    options.lowercase_keys = false; // set to true to lowercase keys
    options.role = null;            // default
    options.pageSize = 4096;  

}

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


custom-express.js

var express = require ('express');
var consign = require('consign')
var bodyParser = require('body-parser');

module.exports = function(){
    var app = express();

    app.use(bodyParser.urlencoded({extended: true}));
    app.use(bodyParser.json());

    consign()
        .include('controllers')
        .then('persistencia')
        .into(app);

    return app;
}

notas.js


module.exports = function (app) {

    app.get('/notas', function (req, res) {
        console.log('Processando requisição..');
        res.send('OK.')
    });

    app.get('/notas/nota/:id', function (req, res){
        var id = req.params.id;
        console.log('Processando nota do id:' + id);

        var connection = app.persistencia.connectionFactory();
        console.log('Conectando no banco..')

        var notaDao = new app.persistencia.NotaDao(connection);
        console.log('Entrando no método...')

        notaDao.buscaPorId(id, function(erro, resultado){
            if(erro){
                console.log('Erro ao consultar no banco: ' + erro);
                res.status(500).send(erro);
                return;
            }
            console.log('Aluno encontrado: ' + JSON.stringify(resultado));
            res.json(resultado);
            return;
        })

    })

    app.post('/notas/nota', function (req, res) {
        var nota = req.body;
        console.log("Processando..");

        var connection = app.persistencia.connectionFactory();
        var notaDao = new app.persistencia.NotaDao(connection);

        notaDao.salva(nota, function (exception, result) {
            console.log('Nota cadastrada: ' + result);
            res.json(pagamento)
        });




    });
}

NotaDao.js

var express = require ('express');
var consign = require('consign')
var bodyParser = require('body-parser');

module.exports = function(){
    var app = express();

    app.use(bodyParser.urlencoded({extended: true}));
    app.use(bodyParser.json());

    consign()
        .include('controllers')
        .then('persistencia')
        .into(app);

    return app;
}
4 respostas

Boa noite, Lucas! Como vai?

Veja que dentro da função createDBConnection() faltou criar a conexão com o BD e retorná-la! Faça essa correção que as coisas devem funcionar como esperado!

Qualquer coisa é só falar!

Grande abraço e bons estudo, meu aluno!

Boa Tarde Gabriel.

Obrigado pelo comentário. Para criar a conexão seria necessário criar uma instância quando eu declaro a variável connection ?

var connection = new app.persistencia.connectionFactory();
        console.log('Conectando no banco..')

Alterei meu connectionFactory conforme a documentação do node-firebird mas continua dando query undefinied:

var firebird = require('node-firebird');
var options = {};

function createDBConnection(){

   return firebird.create(
        options.host = '*******',
        options.port = 3050,
        options.database = 'ERP.fdb',
        options.user = '*****',
        options.password = '******',
        options.lowercase_keys = false, // set to true to lowercase keys
        options.role = null,            // default
        options.pageSize = 4096 

    )




}

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

Segue a documentação do node-firebird: https://www.npmjs.com/package/node-firebird

solução!

Depois de muito esforço consegui pessoal.

O erro esyava no parâmetro options do método attach do firebird.. Removi alguns options e funcionou:

options.host = '***********';
    options.port = 3050;
    options.database = '**********';
    //options.database = 'ERP.FDB';
    options.user = 'SYSDBA';
    options.password = 'masterkey';
    //options.lowercase_keys = false; // set to true to lowercase keys
    //options.role = null;            // default
    //options.pageSize = 4096;

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software