https://github.com/basedwon/leveldb
A convenient wrapper around LevelDB for both server-side and client-side JavaScript
https://github.com/basedwon/leveldb
database isomorphic leveldb
Last synced: 9 months ago
JSON representation
A convenient wrapper around LevelDB for both server-side and client-side JavaScript
- Host: GitHub
- URL: https://github.com/basedwon/leveldb
- Owner: basedwon
- License: mit
- Created: 2023-09-29T01:17:55.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-12-16T12:16:05.000Z (about 2 years ago)
- Last Synced: 2025-05-05T03:35:22.852Z (10 months ago)
- Topics: database, isomorphic, leveldb
- Language: JavaScript
- Homepage:
- Size: 12.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: docs/contributing.md
- License: LICENSE
Awesome Lists containing this project
README
# LevelDB
[](https://www.npmjs.com/package/@plaindb/leveldb)
[](https://gitlab.com/frenware/framework/plaindb/leveldb/-/pipelines)
[](https://gitlab.com/frenware/framework/plaindb/leveldb/-/blob/master/LICENSE)
[](https://www.npmjs.com/package/@plaindb/leveldb)
[](https://gitlab.com/frenware/framework/plaindb/leveldb)
[](https://github.com/basedwon/leveldb)
[](https://twitter.com/basdwon)
[](https://discordapp.com/users/basedwon)
Provides a convenient wrapper around LevelDB for both server-side and client-side JavaScript. Extending basic LevelDB functionality, integrating seamlessly with emitted events and enabling a more straightforward and modular approach for database operations.
## Features
- Singleton pattern for database instances
- Easy-to-use asynchronous APIs
- Stream support for read and write operations
- Sub-levels for better data organization
- Custom encoding/decoding options
- Event emission and handling
- Batch operations
## Installation
Install the package with:
```bash
npm install @plaindb/leveldb
```
## Usage
First, import the `LevelDB` library.
```js
import LevelDB from '@plaindb/leveldb'
```
or
```js
const LevelDB = require('@plaindb/leveldb')
```
### Initialization
You can initialize a LevelDB instance as follows:
```js
const db = new LevelDB({
dbName: 'myDatabase',
dbPrefix: 'prefix',
reset: true,
separator: '!',
keyEncoding: 'utf8',
valueEncoding: 'msgpack'
})
```
### Constructor Options
When instantiating a `LevelDB` object, you can pass an options object as follows:
- **`dbName`**: (string) The name of the LevelDB database. Default is `'.db'`.
- **`dbPrefix`**: (string) A prefix to be used before the dbName. Default is `''` (empty string).
- **`client`**: (object) Custom Level client. If not provided, a new Level client will be created.
- **`reset`**: (boolean) If `true`, clears the database on instantiation. Default is `false`.
- **`separator`**: (string) The separator used for key names. Default is `'!'`.
- **`keyEncoding`**: (string | object) Encoding for keys. Default is `'utf8'`.
- **`valueEncoding`**: (string | object) Encoding for values. Default is `'msgpack'`.
### Putting Data
To insert data into the LevelDB database:
```js
await db.put('key', 'value')
```
### Getting Data
To retrieve data from the database:
```js
const value = await db.get('key')
```
### Deleting Data
To delete data:
```js
await db.del('key')
```
### Stream Operations
For large datasets, you can use streaming:
```js
const readStream = db.createReadStream()
readStream.on('data', data => {
console.log(data)
})
```
### Sub-levels
You can create sub-levels for better data organization:
```js
const subDB = db.sub('subPath')
```
### Batch Operations
For performing multiple operations atomically:
```js
await db.batch([
{ type: 'put', key: 'key1', value: 'value1' },
{ type: 'del', key: 'key2' }
])
```
### Event Handling
You can also attach event listeners:
```js
db.on('put', (key, value) => {
// Do something
})
```
## Documentation
- [API Reference](/docs/api.md)
## Tests
In order to run the test suite, simply clone the repository and install its dependencies:
```bash
git clone https://gitlab.com/frenware/framework/plaindb/leveldb.git
cd basd
npm install
```
To run the tests:
```bash
npm test
```
## Contributing
Thank you! Please see our [contributing guidelines](/docs/contributing.md) for details.
## Donations
If you find this project useful and want to help support further development, please send us some coin. We greatly appreciate any and all contributions. Thank you!
**Bitcoin (BTC):**
```
1JUb1yNFH6wjGekRUW6Dfgyg4J4h6wKKdF
```
**Monero (XMR):**
```
46uV2fMZT3EWkBrGUgszJCcbqFqEvqrB4bZBJwsbx7yA8e2WBakXzJSUK8aqT4GoqERzbg4oKT2SiPeCgjzVH6VpSQ5y7KQ
```
## License
@plaindb/leveldb is [MIT licensed](https://gitlab.com/frenware/framework/plaindb/leveldb/-/blob/master/LICENSE).