Estou fazendo o curso de Javascript Avançado III, e estou com um problema.
var ConnectionFactory = (function(){
const stores = ['negociacoes'];
const version = 7;
const dbName = 'aluraframe';
let conexao = null;
let close = null;
return class ConnectionFactory {
constructor () {
throw new Error ('Não é possível criar instancias da classe ConnectionFactory');
}
static getConnection() {
return new Promise ((resolve, reject) => {
var openRequest = window.indexedDB.open(dbName, version);
openRequest.onupgradeneeded = e => {
ConnectionFactory._createStores(e.target.result);
};
openRequest.onsuccess = e => {
if(!conexao) {
conexao = e.target.result;
close = conexao.close.bind(conexao);
conexao.close(() => {
throw new Error('Não é possível fechar a conexão com o banco')
});
}
resolve(conexao);
};
openRequest.onerror = e => {
console.log(e.target.error);
reject(e.target.error.name);
};
});
}
static _createStores (conexao) {
stores.forEach(store => {
if(conexao.objectStoreNames.contains(store))
conexao.deleteObjectStore(store);
conexao.createObjectStore(store,{autoIncrement: true});
});
}
static closeConnection() {
if(conexao) {
close();
conexao = null;
close = null;
}
}
}
})();
Ao avançar mais um pouco no curso, foi preciso listar e adicionar negociações no banco e encontrei o erro abaixo:
Uncaught (in promise) DOMException: Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.
at Promise (http://localhost:3000/js/app/dao/NegociacaoDao.js:30:18)
at NegociacaoDao.listarTodos (http://localhost:3000/js/app/dao/NegociacaoDao.js:27:16)
at NegociacaoController.ConnectionFactory.getConnection.then.then.dao (http://localhost:3000/js/app/controllers/NegociacaoController.js:24:30)
Comparando o código com o feito na aula, aparentemente está igual. O que posso fazer pra solucionar o problema?