Continuando a série Manipulação de dados Client-Side com Dexie.js, na parte Parte I mostramos como criar um banco local, criar uma tabela, mapeá-la inserir e recuperar registros com Dexie.js
Nesse artigo, iremos mostrar como criar filtros mais específicos dos dados inseridos.
Utilizamos a tabela gerado na parte I para criar uma sequência. No ex1 uma consulta de registros filtrando todos os nomes que sejam iguais a string Joao.
//filtrando a tabela da parte I
//ex1: filtrando pelo nome (equivalente em sql: where nome = "Joao")
db.tabela_nome.where("nome").equals("Joao").each(function(registro){
//retorna todo registro que tenha como nome igual a "Joao"
console.log(registro);
});
No exemplo 2 você pode notar uma consulta realizada similar ao LIKE do SQL
//ex2: filtrando where telefone like "5541%"
db.tabela_nome.where("telefone").startsWith("5541")
.each(function(registro){
//retorna todo registro que tenha
//telefone com início 5541
console.log(registro);
});
Realizando ordeção de elementos, utilizando a função orderBy como parâmetro um campo mapeado em stores() e ordenado de forma decrescente os registros.
//ex3: ordenando registros pelo nome
db.tabela_nome.orderBy('nome');
//ex4: ordenando registros pelo nome decrescente
db.tabela_nome.orderBy('nome').reverse();
Limitando a quantidade de registros filtrados
//ex5: filtrando com limit 5
db.tabela_nome.orderBy('nome').limit(5);
Filtro para paginação
//ex6: filtrando com offset e limit para paginição db.tabela_nome.limit(5).offset(10);
É possível também mesclar os métodos e chamadas, no exemplo abaixo é deletado todos os registros após aplicar um filtro
//ex7: mesclando filtros com opção de delete
db.tabela_nome.where("telefone").startsWith("5541").delete();
A biblioteca Dexie.js proporciona diversos recursos e várias funções que permitem realizar todos os filtros essenciais para construção de Progressive Web Applications (PWA).
Para mais referências:
http://dexie.org/docs/WhereClause/WhereClause
