IndexedDb - Verifique se a tabela existe e contém dados
-
12-12-2019 - |
Pergunta
Usando IndexedDB quando meu aplicativo é executado pela primeira vez, eu o preencho com alguns dados. Quero garantir que, quando o banco de dados e as tabelas forem criados, eles ainda não existam.
Posso consultar o comprimento de uma tabela para ver se ela contém dados em JavaScript?
Solução
A melhor maneira é tentar abrir o objectStore no bloco try catch.Também é síncrono.Em caso de erro você pode criar uma loja por exemplo:
var store;
try {
store = request.transaction.objectStore('yourStore');
}
catch(e) {
store = db.createObjectStore('yourStore');
}
Outras dicas
Você pode usar objectstore.count () função,Mas eu recomendo armazenar algum tipo de meta-dados que diriam que seu DB local é inicializado.Caso contrário, você pode ter recarregamento de páginas no meio da criação de dados e nunca ter seus dados totalmente sincronizados com dados remotos.
O banco de dados é criado se não existir um banco de dados com o nome especificado, caso contrário ele será aberto
por exemplo.var request = indexedDB.open("DataTbl");
Então, se o seu banco de dados já existir, ele irá apenas abri-lo e verificar se o conteúdo da tabela já existe, então você pode criar um objectstore xyz e armazenar algum par de sinalizadores de chave/valor dentro dele, dizendo que a inserção foi bem-sucedida e verificar mais tarde sempre que a página é recarregada.
Além disso, você pode tentar contar a função especificada por @toske
referência: