level

Universal abstract-level database for Node.js and browsers

MIT 47 个版本
安装
npm install level
yarn add level
pnpm add level
bun add level
README

level

Universal abstract-level database for Node.js and browsers. This is a convenience package that exports classic-level in Node.js and browser-level in browsers, making it an ideal entry point to start creating lexicographically sorted key-value databases.

:pushpin: Which module should I use? What is abstract-level? Head over to the FAQ.

level badge npm Node version Test Coverage Standard Common Changelog Community Donate

Usage

If you are upgrading: please see UPGRADING.md.

const { Level } = require('level')

// Create a database
const db = new Level('example', { valueEncoding: 'json' })

// Add an entry with key 'a' and value 1
await db.put('a', 1)

// Add multiple entries
await db.batch([{ type: 'put', key: 'b', value: 2 }])

// Get value of key 'a': 1
const value = await db.get('a')

// Iterate entries with keys that are greater than 'a'
for await (const [key, value] of db.iterator({ gt: 'a' })) {
  console.log(value) // 2
}

TypeScript type declarations are included and cover the methods that are common between classic-level and browser-level. Usage from TypeScript requires generic type parameters.

TypeScript example
// Specify types of keys and values (any, in the case of json).
// The generic type parameters default to Level<string, string>.
const db = new Level<string, any>('./db', { valueEncoding: 'json' })

// All relevant methods then use those types
await db.put('a', { x: 123 })

// Specify different types when overriding encoding per operation
await db.get<string, string>('a', { valueEncoding: 'utf8' })

// Though in some cases TypeScript can infer them
await db.get('a', { valueEncoding: db.valueEncoding('utf8') })

// It works the same for sublevels
const abc = db.sublevel('abc')
const xyz = db.sublevel<string, any>('xyz', { valueEncoding: 'json' })

Install

With npm do:

npm install level

For use in browsers, this package is best used with browserify, webpack, rollup or similar bundlers. For a quick start, visit browserify-starter or webpack-starter.

Supported Platforms

At the time of writing, level works in Node.js 18+ and Electron 30+ on Linux, Mac OS and Windows, including any future Node.js and Electron release thanks to Node-API, including ARM platforms like Raspberry Pi and Android, as well as in Chromium, Firefox and Safari. For details, see Supported Platforms of classic-level and Browser Support of browser-level.

Binary keys and values are supported across the board.

API

The API of level follows that of abstract-level. For additional options and methods specific to classic-level or browser-level, please see their respective READMEs. The documentation below only covers the common constructor.

db = new Level(location[, options])

Create a new database or open an existing database. The location argument must be a directory path (relative or absolute) where LevelDB will store its files, or in browsers, the name of the IDBDatabase to be opened.

Contributing

Level/level is an OPEN Open Source Project. This means that:

Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project.

See the Contribution Guide for more details.

Support us with a monthly donation on Open Collective and help us continue our work.

License

MIT

版本列表
10.0.0 2025-04-20
9.0.0 2024-12-01
8.0.1 2024-01-27
8.0.0 2022-03-25
7.0.1 2021-10-02
7.0.0 2021-04-17
6.0.1 2020-03-04
6.0.0 2019-10-19
5.0.1 2019-03-29
5.0.0-0 2018-12-31
5.0.0 2019-03-29
4.0.0 2018-05-23
3.0.2 2018-05-23
3.0.1 2018-05-05
3.0.0 2018-02-17
2.1.2 2018-01-26
2.1.1 2017-12-13
2.1.0 2017-12-06
2.0.1 2017-11-11
2.0.0 2017-10-17
2.0.0-rc3 2017-09-16
2.0.0-rc2 2017-09-12
2.0.0-rc1 2017-09-06
1.7.0 2017-05-17
1.6.0 2017-02-06
1.5.0 2016-10-16
1.4.0 2015-11-27
1.3.0 2015-07-29
1.2.0 2015-06-24
1.1.0 2015-06-02
1.0.0-0 2015-05-16
1.0.0 2015-05-19
0.19.1 2015-05-05
0.19.0 2015-05-05
0.18.0 2013-11-18
0.17.0-1 2013-10-09
0.17.0 2013-10-01
0.16.0 2013-09-10
0.15.0 2013-08-26
0.14.0 2013-08-19
0.13.0 2013-08-11
0.12.0 2013-07-25
0.10.0 2013-06-14
0.9.0 2013-05-27
0.8.0 2013-05-19
0.0.1 2013-04-15
0.0.0 2013-04-15