No armazenamento local do HTML5, existe um banco de dados chamado IndexedDB. Da parte anterior: Série avançada HTML5: armazenamento da Web, sabemos que o armazenamento da Web pode acessar facilmente dados simples no acesso local, mas para um grande número de armazenamento estruturado, as vantagens do indexedB são ainda mais óbvias. Em seguida, vamos dar uma olhada em como o indexedDB armazena dados.
Conecte o banco de dadosUm site pode ter vários bancos de dados indexedDB, mas o nome de cada banco de dados é único. Precisamos conectar um banco de dados específico através do nome do banco de dados.
var pesquisa = indexeddb.open ('dbname', 1); } Solicitação.
Usamos o método indexeddb.ope para conectar o banco de dados. Este método retornará um objeto iDBOPENDBREQUEST para representar um objeto de solicitação que solicita um banco de dados. Podemos definir o método em que a conexão é bem -sucedida ou falha em executar, monitorando os eventos OnsuccCess e OnError do objeto de solicitação.
Como o data warehouse no banco de dados não permite que o armazém do banco de dados altere na mesma versão, o novo número da versão é necessário para atualizar a versão no método indexeddb.open para evitar modificar repetidamente o banco de dados na mesma versão. O número da versão deve ser um número inteiro!
var pesquisa = indexeddb.open ('dbname', 2); is = is = is = = ' + e.neWVersion);}
Definimos o método executado quando a versão do banco de dados é atualizada monitorando o evento OnUpGradEneededed do objeto Solicitação.
Desligue o banco de dadosDepois de usar o IndexedB.ope para conectar -se ao sucesso do banco de dados, um objeto IDBOPENDBREQUEST será retornado.
Var Research = indexeddb.open ('dbname', 2); Close (); Console.log ('O banco de dados foi fechado');}Exclua o banco de dados
indexeddb.deleteDatabase ('dbname');Crie armazém de objetos
Armazenamento de objetos é a base do banco de dados indexedDB.
Var Research = indexeddb.open ('dbname', 3); 'UserID', AutoinCrement: false});
DB.CreateObjectStore Método recebe dois parâmetros. A propriedade Keypath nesse objeto é a chave principal, que é equivalente ao ID na tabela de banco de dados como a chave principal. O atributo Autoiincrement é falso, o que significa que o valor principal da chave não aumenta por si só.
NOTA: No banco de dados, o nome do Warehouse de objeto não pode ser repetido; caso contrário, o navegador reportará um erro.
Criar um índiceNo banco de dados indexedDB, um índice é criado através de um determinado atributo do objeto de dados.
Var Research = indexeddb.open ('dbname', 4); 'UserID', AutoinCrement: false});
O método Store.CreateIndEx recebe três parâmetros. O valor é um objeto JS. A propriedade exclusiva nesse objeto é verdadeira, o que significa que o valor do índice não pode ser o mesmo, ou seja, o nome de usuário dos dois dados não pode ser o mesmo, e False pode ser o mesmo.
AssuntosNo indexedDB, todas as operações de dados só podem ser realizadas nos assuntos. Depois que o banco de dados for bem -sucedido, você pode usar o método de transação do objeto iDBOPENDBREQUEST para abrir apenas transações de leitura e escrita.
Var Research = indexeddb.open ('dbname', 5); tx.OnComplete = function (e) {console.log ('a transação está acima');} tx.onabort = function (e) {console.log ('transação foi suspensa');}}
O método DB.Transact recebe dois parâmetros. O segundo parâmetro é o modo de transação. Pode ser transmitido para o ReadWrite para operações de leitura e escrita.
Dados operacionaisVar Research = Indexeddb.open ('DBName', 5); ',', ',' Readwrite '); valor); excluir (1); }}}}}}
O papel de add e put é semelhante. e use add para salvar os dados.
Dados de recuperaçãoSabemos que acima pode obter dados usando o método get (), mas o valor principal é necessário. Se queremos obter uma variedade de dados, podemos usar um cursor. O cursor foi criado e aberto pelo método OpenCursor do objeto Warehouse.
O método OpenCursor recebe dois parâmetros.
// O limite de limite representa uma coleção de valores -chave primários de 1 a 10 (incluindo 1 e 10). // Se o terceiro parâmetro for verdadeiro, significa que o valor mínimo da chave não será 1. Se o quarto parâmetro for verdadeiro, significa que ele não contém o valor máximo da chave 10, e o padrão é o Falsevar BoundRange = iDbkeyrande.bound (1, 10, falso falso, falso); O único parâmetro () é o principal valor da chave, um tipo inteiro. varmingRange = iDbkeyrange.only (1); // O segundo parâmetro é opcional, o que significa que o TRUE não inclui a chave primária 1, o FALSE é incluído e os inadimplentes para FalseVar LogerRange = IDBKEYRANGE. do valor da chave primária menor que 10 essência // O segundo parâmetro é opcional, o que significa que o TRUE não inclui a maior chave primária 10, e False inclui, e o padrão é falsevar upperMrange = iDbkeyRange.upeperbound (10, false);
O segundo parâmetro do método OpenCursor representa a direção de leitura do cursor.
Var Research = Indexeddb.open ('DBName', 6); ',', ',' ReadWrite '); ; }
Quando há dados que atendem às condições de pesquisa, você pode atualizar os dados através do método de atualização:
Cursor.updata ({userID: cursor.key, nome de usuário: 'hello', idade: 18});
Esses dados podem ser excluídos através do método de exclusão:
cursor.Delete ();
Você pode continuar lendo os próximos dados através do método ConstinUe, caso contrário, você não continuará a ler depois de ler os primeiros dados:
cursor.continue ();Resumir
Desde a conexão de bancos de dados, criando armazéns de objetos, índices, até dados de operação e recuperação, conclua o processo completo dos dados de acesso indexedDB. Abaixo através de um exemplo completo para entender melhor o banco de dados indexedDB. Endereço do código: indexedDB-Demo
O acima é todo o conteúdo deste artigo.