Este exemplo é um aplicativo Android simples no qual o usuário pode salvar uma avaliação com uma propriedade de classificação e nome em um banco de dados Couchbase Lite. Ele usa os componentes TabLayout e ViewPager para ilustrar três cenários diferentes, cada um deles em uma guia separada.
Único (1ª guia): O _id é gerado aleatoriamente pelo Couchbase Lite. Um novo documento é persistido no banco de dados sempre que o campo Salvar for pressionado. O documento armazenado terá as seguintes propriedades:
|
1
2
3
4
5
6
7
|
{
"_id": “008c30d0-0f57-4477-8fa5-b9685f410f9e”,
"_rev": “1-38fd691714c1ed19ce48a1f4a87c20d9”,
"name" (nome): "chef123",
"classificação": 4,
"tipo": "único"
}
|
Conflito (2ª guia): O _id é definido como o valor que o usuário digitou na entrada de texto. Pressionar Salvar manterá um novo documento no banco de dados ou o atualizará se já existir um com essa ID.
|
1
2
3
4
5
6
|
{
"_id": "chef123",
"_rev": “1-38fd691714c1ed19ce48a1f4a87c20d9”,
"classificação": 4,
"tipo": "conflito"
}
|
P2P (3ª guia): O campo de entrada de texto recebe a URL de um banco de dados de destino do Couchbase Lite ou do Sync Gateway no formato https://{ip}:55000/ratingapp.
Abaixo do ViewPager, há um Interruptor botão de alternância para iniciar/parar as replicações pull/push contínuas para um banco de dados remoto. Normalmente, esse seria o URL do Sync Gateway em execução na nuvem. Você pode alterar o URL remoto em StorageManager.java para sua própria instância do Sync Gateway (consulte a seção abaixo para implantar o Couchbase Server e o Sync Gateway).
Por fim, há uma tabela na metade inferior da tela que exibe o seguinte:
Na primeira guia, ele mostra o número de avaliações para cada valor possível. Ele está usando uma consulta com um nível de grupo definido como 1 para agregar os documentos com a mesma classificação e uma função de redução para contá-los.
O código para registrar a exibição está em StorageManager.java:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
Ver classificaçõesVer = banco de dados.getView(UNIQUE_RATINGS_VIEW);
classificaçõesVer.setMapReduce(novo Mapeador() {
@Substituir
público vazio mapa(Mapa<Cordas, Objeto> documento, Emissor emissor) {
se (documento.obter("tipo").iguais("único")) {
emissor.emitir(documento.obter("classificação").toString(), nulo);
}
}
}, novo Redutor() {
@Substituir
público Objeto reduzir(Lista<objeto largura=“300” altura=“150”> chaves, Lista<objeto> valores, booleano Reduzir) {
retorno novo Inteiro(valores.tamanho());
}
}, “16”);
E a ao vivo consulta é instanciado em <forte>Atividade principal.java</forte> para notificar o Reciclador Ver adaptador quando o visualização índice tem alterado:
<pré>
LiveQuery Consulta ao vivo = gerenciador de armazenamento.banco de dados.getView(Gerenciador de armazenamento.UNIQUE_RATINGS_VIEW).createQuery().toLiveQuery();
Consulta ao vivo.setGroupLevel(1);
Consulta ao vivo.setDescending(verdadeiro);
|
Na segunda e terceira guias, ele exibe o número de revisões conflitantes de um documento. Ele mostra apenas o número de revisões conflitantes, mas também seria possível resolver os conflitos usando a função banco de dados.getDocument({id}).getConflictingRevisions() método.
Implantação do Sync Gateway e do Couchbase Server
Implante uma nova instância do Sync Gateway e do Couchbase Server para esse aplicativo com o Tutum. Faça login ou crie uma nova conta no Tutum.co e, em seguida, vincule-a à sua conta PaaS (Digital Ocean, AWS...). Na página Nós crie um novo nó e escolha a PaaS de sua preferência. Na guia etiqueta campo, adicione aplicativo de classificaçãoEm seguida, selecione o Pilhas com esta guia Arquivo Tutum e clique em criar. Essa pilha inclui um contêiner do Sync Gateway vinculado a um contêiner do Couchbase Server.OBSERVAÇÃO: O contêiner do Sync Gateway não será executado porque está tentando se conectar a um bucket do Couchbase Server que não existe. Pode levar vários minutos para que o Couchbase Server seja implantado e para que o console de administração esteja acessível em https://{ip}:8091. Quando estiver acessível, crie uma conta e um bucket chamado padrão (o arquivo de configuração do Sync Gateway espera que o bucket tenha o nome padrão). Depois que o balde for criado, volte para o Tutum Serviços e reinicie o contêiner do Sync Gateway (ou simplesmente clique na guia Executar pois ele deve ser interrompido).
Remoção de todos os documentos de um banco de dados
Use o delete-documents/delete.js para remover todos os documentos em um determinado banco de dados. Pode ser um banco de dados do Couchbase Lite ou do Sync Gateway. Substitua o nome do host no script pelo nome do banco de dados de destino do qual você deseja excluir os documentos.