Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

PouchDB adapter using ReactNative SQLite as its backing store

License

NotificationsYou must be signed in to change notification settings

craftzdog/pouchdb-adapter-react-native-sqlite

Repository files navigation

PouchDB adapter usingop-sqlite as its backing store on React Native.It's much faster than AsyncStorage.

As of v4.0.0, it no longer requires@craftzdog/pouchdb-adapter-websql-core.It now directly uses op-sqlite, so it's more efficient.

How to use

Installation

yarn add @op-engineering/op-sqlite react-native-quick-crypto @craftzdog/react-native-buffer @craftzdog/pouchdb-errors

Polyfill NodeJS APIs

Create ashim.ts file like so:

import{install}from'react-native-quick-crypto'install()

Configure babel to use the shim modules. First, you need to installbabel-plugin-module-resolver.

yarn add --dev babel-plugin-module-resolver

Then, in yourbabel.config.js, add the plugin to swap thecrypto,stream andbuffer dependencies:

plugins:[['module-resolver',{extensions:['.tsx','.ts','.js','.json'],alias:{crypto:'react-native-quick-crypto',stream:'readable-stream',buffer:'@craftzdog/react-native-buffer','pouchdb-errors':'@craftzdog/pouchdb-errors'},},],],

Then restart your bundler usingyarn start --reset-cache.

Install PouchDB and adapter

Now it's ready to use PouchDB!

yarn add pouchdb-core pouchdb-mapreduce pouchdb-replication pouchdb-adapter-http pouchdb-adapter-react-native-sqlite

Createpouchdb.ts:

importPouchDBfrom'pouchdb-core'importHttpPouchfrom'pouchdb-adapter-http'importreplicationfrom'pouchdb-replication'importmapreducefrom'pouchdb-mapreduce'importsqliteAdapterfrom'pouchdb-adapter-react-native-sqlite'exportdefaultPouchDB.plugin(HttpPouch).plugin(replication).plugin(mapreduce).plugin(sqliteAdapter)

How to use PouchDB

importPouchDBfrom'./pouchdb'constpouch=newPouchDB('mydb',{adapter:'react-native-sqlite',// Other options})

Options

You can specify the following options in the PouchDB options:

  • location: The location of the SQLite database file. Seeop-sqlite's docs for more details.
  • encryptionKey: The encryption key for SQLCipher. Seeop-sqlite's docs for more details.

Troubleshootings

Fails to install crypto shim withinstall() on launch

You amy get the following error when new arch is enabled:

 (NOBRIDGE) ERROR  Error: Failed to install react-native-quick-crypto: React Native is not running on-device. QuickCrypto can only be used when synchronous method invocations (JSI) are possible. If you are using a remote debugger (e.g. Chrome), switch to an on-device debugger (e.g. Flipper) instead. (NOBRIDGE) ERROR  TypeError: Cannot read property 'install' of undefined

For now, you have to edit:

  • lib/module/NativeQuickCrypto/NativeQuickCrypto.js

And comment them out:

  // Check if we are running on-device (JSI)  // if (global.nativeCallSyncHook == null || QuickCryptoModule.install == null) {  //   throw new Error('Failed to install react-native-quick-crypto: React Native is not running on-device. QuickCrypto can only be used when synchronous method invocations (JSI) are possible. If you are using a remote debugger (e.g. Chrome), switch to an on-device debugger (e.g. Flipper) instead.');  // }

Contributing

See thecontributing guide to learn how to contribute to the repository and the development workflow.

License

MIT © Takuya Matsuyama


[8]ページ先頭

©2009-2025 Movatter.jp