2015-04-04 20 views

Odpowiedz

1

PouchDB jest zbudowany w przeglądarce, więc może to prawdopodobnie działają na React Native przy odrobinie wysiłku.

Widziałeś https://github.com/almost/react-native-sqlite?

+0

Tak, widziałem. To nie jest magazyn dokumentów. – mrded

+0

Czy mogę zapytać, co możesz zrobić z magazynem dokumentów, którego nie możesz zrobić z SQLite? –

+1

Przechowuj nieustrukturyzowane dane i łatwo przeszukiwać zbiory tych danych? – Moonwalker

6

Możesz być w stanie wykorzystać asyncstorage-down z PouchDB. Normalnie the method for using LevelDOWN adapters in Node.js jest tak:

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

Nie testowałem tego, choć.

Edit: dobrze masz szczęście; ostatnio włożono wiele pracy: pouchdb-async-storage. Oczekuj wkrótce bloga o tym, jak to działa.

+1

Czy nadal przechowywane jest etui SSCHDB-async? Wygląda na to, że nie było żadnego zobowiązania w ciągu 6 miesięcy. Rozważam użycie tego na dużą skalę, reagując natywną aplikacją, ale trochę się boję problemów z kompatybilnością natywną, które znajduję w sieci. – A2345sooted

+1

(Jestem oryginalnym autorem.) Nie, to nie jest super utrzymane. Jeśli mam trochę czasu, prawdopodobnie przejdę do trasy SQLite, np. Https://github.com/nolanlawson/node-websql#custom-sqlite3-implementation w połączeniu z https://github.com/almost/react- native-sqlite (który może po prostu zadziałać już, w rzeczywistości). – nlawson

0

Możesz łatwo wdrożyć PouchDB na górze na SQLLite - ma kilka opcji konfiguracji. Aby to zadziałało, możesz potrzebować wtyczki SQLite. Zrobiłem to dla Cordova w rzeczywistości i działało całkiem nieźle. Wierzę, że PouchDB (który jest czystym JavaScript i dlatego może być użyty po raz pierwszy w ReactNative) ma adapter, który działa z pełną funkcjonalną wtyczką SQLite3.

React Native wersję tej wtyczki jest dostępny tutaj:

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

Oryginalny Cordova Link wtyczki można znaleźć na github projektu, jak również.

+0

Muszę to cofnąć. Wygląda na to, że istnieje problem z wymaganiami ze strony JS, który sprawia, że ​​rozwiązanie oparte na PouchDB nie jest teraz możliwe. – Moonwalker

+0

niektórzy właśnie opublikowali moduł Native PouchDB React na NPM, który używa magazynu-native-sqlite-storage jako wtyczki. https://www.npmjs.com/package/react-native-pouchdb – Moonwalker

1

Miałem pewne problemy z działaniem funkcji PouchDB na reakcję natywną, ale nie chciałem instalować SQLLite. Dlatego tworzę adapter dla Async Storage.

GitHub npm

Polyfills To brakujące pakiety dla React + Dodano bazę adaptera asynchroniczny Składowanie na "asyncstorage-down". Właściwie to pomaga.

1

Próbowałem używać asymetrycznego adaptera magazynowego Stockulus (https://github.com/stockulus/pouchdb-react-native), ale miałem problemy z replikacją na zdalny serwer CouchDB.

Teraz używam React natywną SQLite Storage (https://github.com/andpor/react-native-sqlite-storage) i PouchDB zwyczaj budowania wzorca (https://pouchdb.com/2016/06/06/introducing-pouchdb-custom-builds.html) tak:

'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 

wiem globalna jest brzydki. Po prostu zaczęliśmy go używać, a replikacja działa lepiej. Musieliśmy także polyfillować kilka rzeczy w węźle. Jest on używany przez rdzeń pouchdb, ale nie jest określony jako zależność w rdzeniu pouchdb. Chciałbym feedback.

Obecnie za pomocą tych pakietów:

"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", 

Dzięki