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

TypeError: app.persistence.PagamentoDao is not a constructor

Estou recebendo este erro. Já consegui fazer funcionar sem o consign, mas com esta lib ele não consegue instanciar a classe. Estranho que outras pessoas já tiveram o mesmo problema aqui.

pagamentos.js

module.exports = function(app) {

    app.get('/pagamentos', function(req, res) {
        console.log('Returning payments.');
        res.send('OK');
    });

    app.post('/pagamentos/pagamento', function(req, res) {
        var pagamento = req.body;

        pagamento.status = 'created';
        pagamento.createDate = new Date().toISOString();

        var connection = app.persistence.connectionFactory();
        var dao = new app.persistence.PagamentoDao(connection);

        dao.save(pagamento, function() {
            console.log('Payment saved');
            res.json(pagamento);
        })

    });

}

PagamentoDao.js

function PagamentoDao(connection) {
    this._connection = connection;
}

PagamentoDao.prototype.save = function(pagamento, callback) {

    var params = {
        TableName: 'Payment',
        Item: {
            'id' : {N: pagamento.id.toString()},
            'user' : {N: '1'},
            'createDate' : {S: pagamento.createDate},
            'value' : {N: pagamento.value.toFixed(2)},
            'type' : {S: pagamento.type},
            'status' : {S: pagamento.status}
        }
    };

    this._connection.putItem(params, function(err, data) {
        if (err) { console.log('Insert error ' + err.message) };
        callback();
    });
}

A única diferença é que estou usando um banco DynamoDB. Mesmo tirando o código do método save não funciona.

Aguardo uma ajuda. Abraços.

3 respostas
solução!

Consegui fazer funcionar colocando este código no final no arquivo PagamentoDAO.js:

module.exports = function (connection) {
    return PagamentoDao;
}

Opa Luiz, era esse mesmo o problema, como você não estava exportando, não ia conseguir acessar!

O problema é que no vídeo não aparece esse trecho no código da PagamentoDao.js. Valeu!