Boa tarde a todos!
Conforme a vídeo aula e sua transcrição, o seguinte comando no console do navegador:
ConnectionFactory.getConnection().then(connection => console.log(connection));
Nos retornar dois objetos, sendo eles: Promise e IDBDatabase. E é nessa parte que estou tendo dificuldade, pois somente objeto Promise que esta retornando. Logo consigo ter retorno do IDBDdatabase se eu fizer:
connection;
Outro ponto também é quando fecho a conexão, não lança a mensagem de erro. Segue abaixo:
File: ConnectionFactory.js
var ConnectionFactory = (function() {
const stores = ['negociacoes'];
const version = 2;
const dbName = 'aluraframe';
var connection = null;
var close = null;
return class ConnectionFactory {
constructor() {
throw new Error('Não é possível instanciar uma ConnectionFactory.');
}
static getConnection() {
return new Promise((resolve, reject) => {
let openRequest = window.indexedDB.open(dbName, version);
openRequest.onupgradeneeded = e => {
ConnectionFactory._createStores(e.target.result);
};
openRequest.unsuccess = e => {
if(!connection) {
connection = e.target.result;
close = connection.close.bind(connection);
// Linha abaixo não está sendo lançada quando fecho a conexão
connection.close = function() {
throw new Error('Você não pode fechar diretamente a conexão.');
}
}
resolve(connection);
};
openRequest.unerror = e => {
console.log('Erro:' + 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;
}
}
}
})();
File: aprendendo_indexeddb.html
var connection;
var openRequest = window.indexedDB.open('aluraframe', 2);
openRequest.onupgradeneeded = e => {
console.log('Cria ou altera um banco já existente.')
let minhaConnection = e.target.result;
if(minhaConnection.objectStoreNames.contains('negociacoes')) {
minhaConnection.deleteObjectStore('negociacoes');
}
minhaConnection.createObjectStore('negociacoes' , {autoIncrement: true});
};
openRequest.onsuccess = e => {
console.log('Conexão obtida com sucesso.')
connection = e.target.result;
};
openRequest.onerror = e => console.log(e.target.error);