Manipulação de dados Client-Side com Dexie.js – Parte II

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