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?

Foi útil?

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:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top