Есть ли какие-нибудь хранилища документов на реагировать родные?

Было бы здорово иметь что-то похожее на 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 без особых усилий.

Вы видели https://github.com/almost/react-native-sqlite?

У меня были некоторые проблемы с получением PouchDB, работающей на реагирующем языке, но я не хотел устанавливать SQLLite. Поэтому я создаю адаптер для Async Storage.

GitHub нпм

Он заполняет недостающие пакеты для 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 проекта.

Другие вопросы по тегам