Quando adiciono alguma negociação na tabela e no banco de dados, o IndexedDB não atualiza automaticamente.
Não consigo encontrar o erro no código:
// NegociacaoController.js
adiciona(event) {
event.preventDefault();
ConnectionFactory.getConnection()
.then(conexao => {
let negociacao = this._criaNegociacao();
new NegociacaoDao(conexao).adiciona(negociacao)
.then(() => {
this._listaNegociacoes.adiciona(negociacao);
this._mensagem.texto = `Negociação adicionada com sucesso`;
this._limpaForm();
});
})
.catch(erro => this._mensagem.texto = erro);
}
// ConnectionFactory.js
var ConnectionFactory = (function() {
const stores = ['negociacoes'];
const version = 4;
const dbName = 'aluraframe';
var connection = null;
var close = null;
return class ConnectionFactory {
constructor() {
throw new Error(`não é possível instanciar esta classe`);
}
static getConnection() {
return new Promise((resolve, reject) => {
let openRequest = window.indexedDB.open(dbName, version);
openRequest.onupgradeneeded = e => {
ConnectionFactory._createStores(e.target.result);
};
openRequest.onsuccess = e => {
if(!connection) {
connection = e.target.result;
close = connection.close.bind(connection);
connection.close = function() {
throw new Error(`Você não pode fechar diretamente a conexão`);
};
}
resolve(connection);
};
openRequest.onerror = e => {
console.log(e.target.error);
reject(e.target.error.name);
};
});
}
static _createStores(connection) {
stores.forEach(store => {
if(connection.objectStoreNames.contains(store))
connection.deleteObjectStore(store);
connection.createObjectStore(store, { autoIncrement: true});
});
}
static closeConnection() {
if(connection) {
close();
connection = null;
close = null;
}
}
}
})();