Есть ли какие-нибудь хранилища документов на реагировать родные?
Было бы здорово иметь что-то похожее на PouchDB.
Текущее хранилище ключей-значений (AsyncStorage
) определенно недостаточно для хранения и запроса данных.
5 ответов
Вы можете использовать asyncstorage-down с PouchDB. Обычно метод использования адаптеров LevelDOWN в Node.js выглядит следующим образом:
var PouchDB = require('pouchdb');
var db = new PouchDB('mydb', {db: require('asyncstorage-down')})
Я не проверял это, хотя.
Редактировать: удачи вам; В последнее время много работы было проделано: pouchdb-async-storage. Ожидайте сообщение в блоге скоро о том, как заставить это работать.
PouchDB создан для браузера, поэтому он может работать с React Native без особых усилий.
У меня были некоторые проблемы с получением PouchDB, работающей на реагирующем языке, но я не хотел устанавливать SQLLite. Поэтому я создаю адаптер для Async Storage.
Он заполняет недостающие пакеты для React +. Добавлена база асинхронного адаптера хранилища в режиме "asyncstorage-down". Правильно, это помогает.
Я пытался использовать асинхронный адаптер хранения Stockulus ( https://github.com/stockulus/pouchdb-react-native), но у меня были проблемы с репликацией на удаленный сервер CouchDB.
Теперь я использую встроенное хранилище SQLite React ( https://github.com/andpor/react-native-sqlite-storage) и пользовательский шаблон сборки PouchDB ( https://pouchdb.com/2016/06/06/introducing-pouchdb-custom-builds.html) вот так:
'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
Я знаю, что глобальный уродлив. Мы только начали его использовать, и репликация работает лучше. Мы также должны были заполнить кучу узловых вещей. Это используется ядром pouchdb, но не указано как зависимость в ядре pouchdb. Был бы рад обратной связи.
В настоящее время используются эти пакеты:
"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",
Спасибо
Вы можете легко реализовать PouchDB поверх SQLLite - у него есть несколько вариантов конфигурации. Вам может понадобиться плагин SQLite, чтобы он работал. Я сделал это для Кордовы на самом деле, и это работало довольно хорошо. Я считаю, что PouchDB (который является чистым JavaScript и, следовательно, может использоваться "из коробки" для ReactNative) имеет адаптер, который работает с полнофункциональным плагином SQLite3.
React Native версия этого плагина доступна здесь:
https://github.com/andpor/react-native-sqlite-storage
Оригинальную ссылку на плагин Cordova можно найти и на github проекта.