Este ejemplo es un simple aplicación Android en el que el usuario puede guardar una reseña con una valoración y una propiedad de nombre en una base de datos Couchbase Lite. Utiliza los componentes TabLayout y ViewPager para ilustrar 3 escenarios diferentes, cada uno en una pestaña separada.
Único (1ª pestaña): En _id es generado aleatoriamente por Couchbase Lite. Se persiste un nuevo documento en la base de datos cada vez que el campo Guardar se pulsa el botón . El documento almacenado tendrá las siguientes propiedades:
1
2
3
4
5
6
7
|
{
"_id": “008c30d0-0f57-4477-8fa5-b9685f410f9e”,
"_rev": “1-38fd691714c1ed19ce48a1f4a87c20d9”,
"nombre": "chef123",
"rating": 4,
"tipo": "único"
}
|
Conflicto (2ª pestaña): En _id se ajusta a lo que el usuario haya introducido en la entrada de texto. Pulsando Guardar persistirá un nuevo documento en la base de datos o lo actualizará si ya existe uno con este ID.
1
2
3
4
5
6
|
{
"_id": "chef123",
"_rev": “1-38fd691714c1ed19ce48a1f4a87c20d9”,
"rating": 4,
"tipo": "conflicto"
}
|
P2P (3ª pestaña): El campo de entrada de texto toma la URL de una base de datos de destino de Couchbase Lite o Sync Gateway de la forma http://{ip}:55000/ratingapp
.
Debajo del ViewPager, hay un Interruptor para iniciar/detener las réplicas continuas pull/push a una base de datos remota. Esta suele ser la URL de la puerta de enlace de sincronización que se ejecuta en la nube. Puede cambiar la URL remota en StorageManager.java
a su propia instancia de Sync Gateway (consulte la sección siguiente para desplegar Couchbase Server y Sync Gateway).
Por último, hay una tabla en la mitad inferior de la pantalla que muestra lo siguiente:
En la 1ª pestaña, muestra el número de valoraciones para cada valor posible. Utiliza una consulta con un nivel de grupo establecido en 1 para agregar los documentos con la misma valoración y una función de reducción para contarlos.
El código para registrar la vista se encuentra en StorageManager.java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
Ver ratingsVer = base de datos.getView(VISTA_CLASIFICACIONES_ÚNICAS);
ratingsVer.setMapReduce(nuevo Mapeador() {
@Anular
público void mapa(Mapa<Cadena, Objeto> documento, Emisor emisor) {
si (documento.consiga("tipo").es igual a("único")) {
emisor.emite(documento.consiga("rating").toString(), null);
}
}
}, nuevo Reductor() {
@Anular
público Objeto reducir(Lista<objeto anchura=“300” altura=“150”> llaves, Lista<objeto> valores, booleano reducir) {
devolver nuevo Entero(valores.talla());
}
}, “16”);
Y a en directo consulta es instanciado en <fuerte>Actividad principal.java</fuerte> a notificar a el Reciclador Ver adaptador cuando el ver índice tiene cambiado:
<pre>
LiveQuery liveQuery = storageManager.base de datos.getView(Gestor de almacenamiento.VISTA_CLASIFICACIONES_ÚNICAS).createQuery().toLiveQuery();
liveQuery.setGroupLevel(1);
liveQuery.setDescending(verdadero);
|
En la 2ª y 3ª pestaña, muestra el número de revisiones conflictivas de un documento. Sólo muestra el número de revisiones conflictivas, pero también sería posible resolver los conflictos utilizando el botón database.getDocument({id}).getConflictingRevisions()
método.
Despliegue de Sync Gateway y Couchbase Server
Despliega una instancia nueva de Sync Gateway y Couchbase Server para esta aplicación con Tutum. Inicia sesión o crea una nueva cuenta en Tutum.co, luego enlázala a tu cuenta PaaS (Digital Ocean, AWS...). En el Nodos cree un nuevo nodo y elija el PaaS que desee. En la pestaña etiqueta añada rating-appA continuación, seleccione Pilas con esta pestaña Archivo Tutum y haz clic en crear. Esta pila incluye un contenedor Sync Gateway enlazado con un contenedor Couchbase Server.NOTA: El contenedor Sync Gateway fallará al intentar conectarse a un bucket de Couchbase Server que no existe. Pueden pasar varios minutos hasta que Couchbase Server se despliegue y la consola de administración esté accesible en http://{ip}:8091
. Una vez accesible, crea una cuenta y un cubo llamado por defecto (el archivo de configuración de Sync Gateway espera que el cubo se denomine por defecto). Una vez creado el cubo, vuelve al Tutum Servicios y reinicie el contenedor Sync Gateway (o simplemente haga clic en el botón Ejecutar ya que debería estar parado).
Eliminar todos los documentos de una base de datos
Utiliza el borrar-documentos/borrar.js para eliminar todos los documentos de una base de datos en particular. Puede ser una base de datos Couchbase Lite o Sync Gateway. Sustituye el nombre de host en el script por el de la base de datos de destino de la que deseas eliminar los documentos.