Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Ciclo de Funcionamento do IDB

O problema de fechar a conexão do IDB e ter um efeito em cascata, não poderia ser resolvido chamando getConnection sempre quando a janela é carregada?

Pois mesmo fechando o banco, chamando novamente o método, outro banco sobe, e sendo um Singleton(Somente um), isso é atualizado e corrigido em tempo de execução pelos diferentes usuarios?

> ConnectionFactory.getConnection().then(con => console.log(con))

Promise {<pending>}
IDBDatabase {name: "aluraframe", version: 4, objectStoreNames: 
DOMStringList, onabort: null, onclose: null, …}

> ConnectionFactory.getConnection().then(con => console.log(con.close))

Promise {<pending>}
ƒ close() { [native code] }

> ConnectionFactory.getConnection().then(con => console.log(con))

Promise {<pending>}
IDBDatabase {name: "aluraframe", version: 4, objectStoreNames: DOMStringList, onabort: null, onclose: null, …}

Eu conseguiria manipular em cadeia o IDB armazenando uma var no client antes que o banco seja fechado por alguma das partes?

Por exemplo:

> let a

undefined

> let b

undefined

> let c

undefined

> ConnectionFactory.getConnection().then(con => a =con)

Promise {<pending>}

> ConnectionFactory.getConnection().then(con => b =con)

Promise {<pending>}

> ConnectionFactory.getConnection().then(con => c =con.close)

Promise {<pending>}

> c

ƒ close() { [native code] }

> b

IDBDatabase {name: "aluraframe", version: 4, objectStoreNames: DOMStringList, onabort: null, onclose: null, …}

> a

IDBDatabase {name: "aluraframe", version: 4, objectStoreNames: DOMStringList, onabort: null, onclose: null, …}

> a == b

true

Então de certa forma, alguem mau intencionado conseguiria fechar o acesso ao banco?

Quando eu armazeno o banco em vars diferentes do lado do client, eu estou atuando no mesmo banco em todas elas?

Como eu relaciono o uso desse banco com algum método de segurança através do server?

To curtindo muito o curso, o melhor curso da plataforma que já fiz até agora, abraços!

3 respostas

Fala aí Nicholas, tudo bem? Bom, vamos lá:

Quando eu armazeno o banco em vars diferentes do lado do client, eu estou atuando no mesmo banco em todas elas?

Sim, a conexão será feita para o mesmo banco, porém, será armazenada em variáveis diferentes.

Como eu relaciono o uso desse banco com algum método de segurança através do server?

Poderia dar um exemplo? Não entendi a dúvida.

Fico feliz que esteja gostando do curso \o/

Espero ter ajudado, bons estudos.

Poderia dar um exemplo? Não entendi a dúvida.

No curso tudo é feito no lado do client, quando eu coloco isso para interagir com um servidor, como garantir a integridade visto que de certa forma qualquer um pode manipular os dados armazenados no Client?

solução!

Excelente pergunta, vamos lá:

No curso tudo é feito no lado do client, quando eu coloco isso para interagir com um servidor, como garantir a integridade visto que de certa forma qualquer um pode manipular os dados armazenados no Client?

Na verdade você não irá replicar as informações do servidor para o IndexedDB, geralmente me um projeto real, vai consumir as informações de API e mostrá-las na tela, sem armazenar de forma local.

Quando precisamos criar uma aplicação que seja Offline First, ou seja, que funcione de maneira offline, ai sim, a gente salva os dados retornados pela API no IndexedDB para funcionar como cache e não como repositório de dados.

Espero ter ajudado.