2015-04-04 15 views

risposta

1

PouchDB è progettato per il browser, quindi potrebbe probabilmente funzionare su React Native con un piccolo sforzo.

Hai visto https://github.com/almost/react-native-sqlite?

+0

Sì, ho visto. Non è un archivio di documenti. – mrded

+0

Posso chiederti cosa puoi fare con un archivio doc che non puoi utilizzare con SQLite? –

+1

Memorizza dati non strutturati ed è in grado di cercare facilmente attraverso raccolte di questi dati? – Moonwalker

6

Si può essere in grado di utilizzare asyncstorage-down con PouchDB. Normalmente the method for using LevelDOWN adapters in Node.js è in questo modo:

var PouchDB = require('pouchdb'); 
var db = new PouchDB('mydb', {db: require('asyncstorage-down')}) 

non ho ancora testato questo, però.

Edit: ben fortunati; un sacco di lavoro è stato messo in questo recentemente: pouchdb-async-storage. Aspettatevi presto un post sul blog su come farlo funzionare.

+1

Lo storage pouchdb-async è ancora in fase di manutenzione? Sembra che non ci sia stato un commit in 6 mesi. Sto seriamente pensando di utilizzare questa app su larga scala per le app native, ma ho un po 'paura dei problemi di compatibilità nativa pouchdb/react che sto riscontrando in tutto il web. – A2345sooted

+1

(Sono l'autore originale). No, non è super mantenuto. Se ho un po 'di tempo, probabilmente userò il percorso SQLite, cioè https://github.com/nolanlawson/node-websql#custom-sqlite3-implementation combinato con https://github.com/almost/react- nativo-sqlite (che potrebbe funzionare già, in effetti). – nlawson

0

È possibile implementare facilmente PouchDB su SQLLite, con diverse opzioni di configurazione. Potrebbe essere necessario un plugin SQLite per farlo funzionare. Ho fatto questo per Cordova e ha funzionato abbastanza bene. Credo che PouchDB (che è puro JavaScript e quindi possa essere utilizzato immediatamente per ReactNative) abbia un adattatore che funziona con il plugin completo di SQLite3.

Reagire versione nativa di questo plugin è disponibile qui:

https://github.com/andpor/react-native-sqlite-storage

L'originale collegamento plug-Cordova si possono trovare sul github progetto pure.

+0

Devo riprenderlo. Sembra che ci sia una serie di problemi con la richiesta sul lato JS che rende la soluzione basata su PouchDB non fattibile al momento. – Moonwalker

+0

alcuni hanno appena pubblicato un modulo React Native PouchDB su npm che utilizza react-native-sqlite-storage come plugin. https://www.npmjs.com/package/react-native-pouchdb – Moonwalker

1

ho avuto alcuni problemi ottenere PouchDB lavorare su reagire-nativa, ma non ha voluto installare SqlLite. Così costruisco un adattatore per l'archiviazione asincrona.

GitHub npm

E polyfills i pacchetti mancanti per Reagire + Aggiunta una base adattatore asincrono bagagli su "asyncstorage-down". Correttamente ciò aiuta.

1

Ho provato a utilizzare l'adattatore di archiviazione asincrono di Stockulus (https://github.com/stockulus/pouchdb-react-native) ma ho avuto problemi con la replica su un server CouchDB remoto.

Ora sto usando Reagire nativo SQLite bagagli (https://github.com/andpor/react-native-sqlite-storage) e il modello di generazione personalizzata PouchDB (https://pouchdb.com/2016/06/06/introducing-pouchdb-custom-builds.html) come questo:

'use strict'; 

import PouchDB from 'pouchdb-core' 

// POLYFILLS - adapted from https://github.com/pouchdb/pouchdb/issues/3787#issuecomment-234618747 
global.Buffer = global.Buffer || require('buffer').Buffer; 
global.atob = global.atob || require('atob'); 
global.btoa = global.btoa || require('btoa'); 
require('blob-polyfill'); 

import SQLite from 'react-native-sqlite-storage'; 
global.openDatabase = SQLite.openDatabase; // Expose for websql adapter 
GLOBAL.openDatabase = SQLite.openDatabase; 

PouchDB 
    .plugin(require('pouchdb-adapter-websql')) 
    .plugin(require('pouchdb-adapter-http')) 
    .plugin(require('pouchdb-replication')) 

export default PouchDB 

So che il mondiale è brutto. Abbiamo appena iniziato a utilizzarlo e la replica funziona meglio. Abbiamo anche dovuto riempire polivalenti un sacco di roba per i nodi. Questo è usato da pouchdb-core ma non specificato come dipendenza da pouchdb-core. Mi piacerebbe il feedback.

Attualmente utilizzando questi pacchetti:

"events": "^1.1.1", 
"pouchdb-adapter-http": "6.0.6", 
"pouchdb-adapter-websql": "6.0.6", 
"pouchdb-core": "6.0.6", 
"pouchdb-replication": "6.0.6", 
"atob": "^2.0.3", 
"blob-polyfill": "^1.0.20150320", 
"btoa": "^1.1.2", 
"buffer": "^5.0.0", 

Grazie

Problemi correlati