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