- Notifications
You must be signed in to change notification settings - Fork108
Universal abstract-level database for Node.js and browsers.
License
Level/level
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Universalabstract-level
database for Node.js and browsers. This is a convenience package that exportsclassic-level
in Node.js andbrowser-level
in browsers, making it an ideal entry point to start creating lexicographically sorted key-value databases.
📌 Which module should I use? What is
abstract-level
? Head over to theFAQ.
If you are upgrading: please seeUPGRADING.md
.
const{ Level}=require('level')// Create a databaseconstdb=newLevel('example',{valueEncoding:'json'})// Add an entry with key 'a' and value 1awaitdb.put('a',1)// Add multiple entriesawaitdb.batch([{type:'put',key:'b',value:2}])// Get value of key 'a': 1constvalue=awaitdb.get('a')// Iterate entries with keys that are greater than 'a'forawait(const[key,value]ofdb.iterator({gt:'a'})){console.log(value)// 2}
TypeScript type declarations are included and cover the methods that are common betweenclassic-level
andbrowser-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>.constdb=newLevel<string,any>('./db',{valueEncoding:'json'})// All relevant methods then use those typesawaitdb.put('a',{x:123})// Specify different types when overriding encoding per operationawaitdb.get<string,string>('a',{valueEncoding:'utf8'})// Though in some cases TypeScript can infer themawaitdb.get('a',{valueEncoding:db.valueEncoding('utf8')})// It works the same for sublevelsconstabc=db.sublevel('abc')constxyz=db.sublevel<string,any>('xyz',{valueEncoding:'json'})
Withnpm do:
npm install level
For use in browsers, this package is best used withbrowserify
,webpack
,rollup
or similar bundlers. For a quick start, visitbrowserify-starter
orwebpack-starter
.
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 toNode-API, including ARM platforms like Raspberry Pi and Android, as well as in Chromium, Firefox and Safari. For details, seeSupported Platforms ofclassic-level
andBrowser Support ofbrowser-level
.
Binary keys and values are supported across the board.
The API oflevel
follows that ofabstract-level
. For additional options and methods specific toclassic-level
orbrowser-level
, please see their respective READMEs. The documentation below only covers the common constructor.
Create a new database or open an existing database. Thelocation
argument must be a directory path (relative or absolute) where LevelDB will store its files, or in browsers, the name of theIDBDatabase
to be opened.
Level/level
is anOPEN 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 theContribution Guide for more details.
Support us with a monthly donation onOpen Collective and help us continue our work.
About
Universal abstract-level database for Node.js and browsers.