react-native-leveldown
This library implements an abstract-leveldown
compatible interface to LevelDB for React Native. The implementation is a thin Native Module binding directly to the original C++ implementation of LevelDB.
The native bindings are currently implemented only for iOS (and macOS via Catalyst). A patch implementing Android bindings would be welcome! In the meantime, you can get a compatible interface via level-js on top of indexeddbshim on top of expo-sqlite, but that's obviously much much slower.
Usage
Install via yarn add react-native-leveldown
. Make sure to cd ios; pod install
to build the native module.
This module implements the interface defined in abstract-leveldown
, so you can either use it directly as documented there or somewhat more conveniently using the levelup
wrapper.
Typical usage:
import RNLeveldown from "react-native-leveldown";
import LevelUp from "levelup";
const db = LevelUp(new RNLeveldown("myDatabaseName"));
await db.put("hello", "world");
await db.get("hello") // # => "world"
await db.close();
Note that databases are stored in the app container's Documents directory. In the future, the constructor API should probably be extended to add an option to store it instead in some semi-durable cache location, or an ephemeral temporary directory.