Integración SQLite 3 con PouchDB y Ionic 3

Adrian Pedro Zelada Torrez
MyCodeBad
Published in
3 min readFeb 9, 2018

Como en la anterior publicación vimos como obtener un archivo SQLite3 desde un servidor CouchDB, y si no la leiste aun te dejo el enlace para que puedas hecharle un vistazo Creacion y Sincronizacion de Datos con CouchDB PouchDB y SQLite 3 .

Una vez obtenida el archivo SQLite 3 necesitamos crear un nuevo proyecto Ionic

$ ionic start sqlitePouchdb
$ cd sqlitePouchdb

Una vez instalado copiamos el archivo SQLite3 generado anteriormente a assets del proyecto Ionic que acabamos de inicializar. Continuamos con la instalación de plugins.

$ ionic cordova plugin add cordova-plugin-file
$ npm install --save @ionic-native/file
$ ionic cordova plugin add cordova-plugin-sqlite-2

Luego de ello continuamos con las librerias de PouchDB

$ npm install --save pouchdb
$ npm install --save pouchdb-adapter-cordova-sqlite

La ultima librería instalada pouchdb-adapter-cordova-sqlite es un adaptador de las sentencias que se usan en PouchDB hacia SQLite.

Luego de ello nos vamos a:

node_modules/pouchdb-adapter-cordova-sqlite/lib/index.js

En ese archivo reemplazamos el linea de código:

var WebSqlPouchCore= require('pouchdb-adapter-websql-core');
// Y la reemplazamos por
var WebSqlPouchCore= require('pouchdb-adapter-websql-core').default;

Si no cambiamos la linea de código probablemente nos topemos con el error

Pouch throw an error WebSqlPouchCore.call is not a function

Referencia del error aqui.

Con esta linea de código reemplazada podremos trabajar sin algún error.

Ahora en la aplicación crearemos un inicializador de la base de datos con los respectivos datos, este nos sera de ayuda para cargar la o las bases de datos en memoria para que el dispositivo pueda depender de ellas libremente.

Ya que tenemos la forma de inicializar la o las Bases de Datos hagamos un servicio que pueda interactuar con los diferentes métodos que nos ofrece PouchDB en este caso haremos una clase padre del cual heredaremos sus propiedades y este se encargara de llamar a la inicialización de cada una de las Base de Datos que podríamos necesitar.

Ahora crearemos un servicio que herede de la clase anterior y que con ayuda de la clase padre pueda instanciar la Base de Datos SQLite integrada con PouchDB

Luego de ellos declaramos el servicio users.service.ts en los providers de la aplicación pero no declaramos init.db.ts y father.db.service.ts ya que esas clases no contienen un decorator de Angular y las utilizamos como una librería externa.

Ahora en el componente que deseemos, instanceamos UsersDBServices luego ejecutamos el método getAllData para poder obtener todos los datos de la Base de Datos.

Finalizando agregamos la plataforma y ejecutamos la aplicación en algún dispositivo.

$ ionic cordova platform add android
$ ionic cordova run android

Nota.- La aplicación también funciona correctamente con IOS

Para ver el código completo puede ir a este Github.

Visita mi anterior Post :

Creacion y Sincronizacion de Datos con CouchDB PouchDB y SQLite 3

Referencias :

Prebuilt databases with PouchDB

--

--

Adrian Pedro Zelada Torrez
MyCodeBad

Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad. Albert Einstein.