não aparece nenhum erro no meu editor, apenas três avisos, apliquei a mudança do Sidi nesse tópico, funcionou corretamente, mas se eu executo o código no console duas vezes ele dá um erro.
É esse o código:
ConnectionFactory.getConnection().then(connection => console.log(connection));
E esse o erro:
ConnectionFactory.js:19 Uncaught (in promise) ReferenceError: resolver is not defined
at ConnectionFactory.js:19
at new Promise (<anonymous>)
at Function.getConnection (ConnectionFactory.js:17)
at <anonymous>:1:1
Quando uso closeConnection() ele me retorna um outro erro.
Uncaught Error: Utilize ConnectionFactory.closeConnection() para fechar a conexão
at IDBDatabase.connection.close (ConnectionFactory.js:35)
at Function.closeConnection (ConnectionFactory.js:53)
at <anonymous>:1:19
Eu dei uma olhada no meu código, procurei, procurei e não consegui achar o erro.
classe ConnectionFactory:
var ConnectionFactory = (function () {
const stores = ['negociacoes'];
const version = 1;
const dbName = 'aluraframe';
var connection = null;
var close = null;
return class ConnectionFactory {
constructor() {
throw new Error('Não é possível criar instâncias de ConnectionFactory')
}
static getConnection() {
return new Promise((resolve, reject) => {
if (connection) {
resolver(connection);
return;
}
let openRequest = window.indexedDB.open(dbName, version);
openRequest.onupgradeneeded = e => {
ConnectionFactory._createStores(e.target.result);
console.log('Upgrade DB...');
}
openRequest.onsuccess = e => {
connection = e.target.result;
close = connection.close.bind(connection);
connection.close = () => {
throw new Error('Utilize ConnectionFactory.closeConnection() para fechar a conexão');
}
resolve(connection);
}
openRequest.onerror = e => {
console.log(e.target.error);
reject(e.target.error.name);
}
});
}
static _createStores(connection) {
if (connection.objectStoreNames.contains('store'))
connection.deleteObjectStore('store');
connection.createObjectStore('store', { autoIncrement: true });
}
static closeConnection() {
if (connection) {
connection.close();
connection = null;
}
}
}
})();
Sobre os avisos, dizem que a const 'store' não está sendo usada e a var 'close' também não. Alguém pode me ajudar por favor?