拥有类似于PouchDB的东西会很棒。
当前的键值存储(AsyncStorage
)肯定不足以存储和查询数据。
您可以将asyncstorage-down与 PouchDB 一起使用。通常在 Node.js 中使用 LevelDOWN 适配器的方法是这样的:
var PouchDB = require('pouchdb');
var db = new PouchDB('mydb', {db: require('asyncstorage-down')})
不过,我还没有测试过。
编辑:你很幸运;最近在这方面做了很多工作:pouchdb-async-storage。很快就会有一篇关于如何让它工作的博客文章。
PouchDB 是为浏览器构建的,因此它可以在 React Native 上运行一点点努力。
我尝试使用 Stockulus 的异步存储适配器 ( https://github.com/stockulus/pouchdb-react-native ),但在复制到远程 CouchDB 服务器时遇到问题。
现在我正在使用 React 本机 SQLite 存储 ( 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
我知道全球是丑陋的。我们刚开始使用它,复制效果更好。我们还必须 polyfill 一堆节点的东西。这由 pouchdb-core 使用,但未指定为 pouchdb-core 中的依赖项。希望得到反馈。
目前使用这些包:
"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",
谢谢
您可以在 SQLLite 上轻松实现 PouchDB - 它有多种配置选择。您可能需要一个 SQLite 插件才能使其工作。事实上,我已经为 Cordova 做过这个,而且效果很好。我相信 PouchDB(它是纯 JavaScript,因此可以开箱即用地用于 ReactNative)有一个适配器可以与功能齐全的 SQLite3 插件一起使用。
此插件的 React Native 版本可在此处获得:
https://github.com/andpor/react-native-sqlite-storage
原始的 Cordova 插件链接也可以在项目 github 上找到。