estou tentando instanciar um novo objeto (ex. var dao = new app.persistencia.PersistenciaDao(connection)), mas no log me retorna apenas que = TypeError: app.persistencia.PagamentoDao is not a constructor
estou tentando instanciar um novo objeto (ex. var dao = new app.persistencia.PersistenciaDao(connection)), mas no log me retorna apenas que = TypeError: app.persistencia.PagamentoDao is not a constructor
Luis, posta aqui o que está presente no arquivo PersistenciaDAO, por favor?
function PagamentoDao(connection) {
this._connection = connection;
}
PagamentoDao.prototype.salva = function(pagamento, callback) {
this._connection.query('INSERT INTO pagamentos SET ?', pagamento, callback);
}
PagamentoDao.prototype.lista = function(callback) {
this._connection.query('SELECT * FROM pagamentos', callback);
}
PagamentoDao.prototype.buscaPorId = function(id, callback) {
this._connection.query('SELECT * FROM pagamentos WHERE id = ?', id, callback);
}
PagamentoDao.prototype.delete = function(id, callback) {
this._connection.query('DELETE FROM pagamentos WHERE id = ?', id, callback);
}
Boa noite Luiz, tudo bem?
Faz um favor, da um print nesta variável app.persistencia. Esta parecendo que a referência da variável PersistenciaDao não existe.
index.js
var app = require('./config/custom-express')();
app.listen(3000, function(){
console.log('Servidor rodando na porta 3000.');
});
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;
};
pagamentos.js
module.exports = function(app) {
app.get('/pagamentos', function(req, res){
console.log('Recebida requisicao de teste na porta 3000.');
res.send('Ok.');
});
app.post('/pagamentos/pagamento', function(req, res) {
var pagamento = req.body;
console.log('processando uma requisição de num novo pagamento');
pagamento.status = 'CRIADO';
pagamento.data = new Date();
var connection = app.persistencia.connectionFactory();
var dao = new app.persistencia.PagamentoDao(connection);
dao.salva(pagamento, function(erro, resultado){
console.log('pagamento criado.');
res.json(pagamento);
});
res.send(pagamento);
});
};
connectionFactory.js
var mysql = require('mysql');
function createDBConnection() {
return mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'payfast'
});
}
module.exports = function () {
return createDBConnection;
}
PagamentoDao.js
function PagamentoDao(connection) {
this._connection = connection;
}
PagamentoDao.prototype.salva = function(pagamento, callback) {
this._connection.query('INSERT INTO pagamentos SET ?', pagamento, callback);
}
PagamentoDao.prototype.lista = function(callback) {
this._connection.query('SELECT * FROM pagamentos', callback);
}
PagamentoDao.prototype.buscaPorId = function(id, callback) {
this._connection.query('SELECT * FROM pagamentos WHERE id = ?', id, callback);
}
PagamentoDao.prototype.delete = function(id, callback) {
this._connection.query('DELETE FROM pagamentos WHERE id = ?', id, callback);
}
Oi Luis, você precisa exportar a função construtora para o Node poder utilizar.
module.exports = function () {
return PagamentoDao;
}
isso mesmo Wanderson, obrigado pela disposição e pelo tempo...