leveldb-addon
v2.0.5
Published
A Node.js LevelDB binding
Downloads
7
Readme
Leveldb-addon
Leveldb addon for Node.js, supports synchronous and asynchronous invocation, and supports event emitter
FEATURES
- Support synchronization method call Leveldb, code logic more clear
- Also supports asynchronous method call Leveldb to make running more efficient
- Asynchronous calls use Promise to make the code clearer
INSTALLATION
npm install leveldb-addon --save
API
Properties
Leveldb.prototype.location Reflects the string of the database path
Leveldb.prototype.isOpen Reflects the boolearn of the database is available
Leveldb.prototype.stateCode Reflects the number of the databease status , whenever a database change changes
Methods
- Leveldb.prototype.open(location, [options])
- Leveldb.prototype.close()
- Leveldb.prototype.put( key, value ) or Ldb.prototype.put( json ) return Boolean when execution succeeds return true
- Ldb.prototype.del( key ) or Ldb.prototype.del( keys ) return Boolean when execution succeeds return true
- Ldb.prototype.get( key ) or Ldb.prototype.get( keys ) return [values]
- Ldb.prototype.forEach( callback, [iteratorOptions] )
- Ldb.prototype.asyncPut() return Promise object
- Ldb.prototype.asyncDel() return Promise object
- Ldb.prototype.asyncGet() return Promise object
- Ldb.prototype.asyncForEach( callback, [iteratorOptions] )
- Ldb.prototype.getIterator([iteratorOptions]) return Leveldb.Iterator
- Ldb.prototype.addListener( type, callback, once )
- Ldb.prototype.removeListener( type, callback )
- Ldb.prototype.match(prefix, offset)
Ldb.open(location, options) return Leveldb instance
- start
- end
- prefix
- reverse
- snapshot: default true
- Iterator.read() If the iterator is valid to return itself, the invalid returns undefined
- Iterator.key
- Iterator.value
- Iterator.isEnd
- iterator.break() release iterator
new Leveldb([options])
const Leveldb = require('leveldb-addon');
let options = {
// base settings
"location" : './test.db',
"writeSync" : false,
"readFillCache" : true,
// Levedb default settings
"createIfMissing" : true,
"errorIfExists" : false,
"compression" : true,
"writeBufferSize" : 4194304,
"blockSize" : 4096,
"maxOpenFiles" : 1000,
"blockRestartInterval" :16,
"maxFileSize" : 2097152,
"block_cache" : 8388608,
"filterPolicy" : 10,
// EventListener
"onReady" : ()=>{},
"onCreate" : ()=>{},
"onChanged" : ()=> {},
"onError" : ()=>{},
"onClosed" : ()=>{}
};
let ldb = new Leveldb(options);
For information about setting items, see the Leveldb documentation
Leveldb.prototype.open(location, [options])
ldb.open('./test.db', {});
Leveldb.prototype.close()
ldb.close();
Leveldb.prototype.put( key, value ) or Leveldb.prototype.put( json )
if (ldb.put("abc", 123)) {
console.log('ok');
}
ldb.put({
"abc": null, // delete abc
"def": 456,
"ghi": [7, 8, 9]
});
Leveldb.prototype.del( key ) or Leveldb.prototype.del( keys )
ldb.del("abc");
ldb.del(["abc", "def"]);
Leveldb.prototype.get( key ) or Leveldb.prototype.get( keys )
let value = ldb.get("abc");
let value_json = ldb.get(["abc", "def", "ghi"]);
Leveldb.prototype.forEach( callback, [iteratorOptions] )
ldb.put({"a1": 1, "a2": 2, "b1": 3, "b2": 4, "c1": 5, "c2" : 6, "d.1": 7, "d.2": 8});
ldb.forEach((iter)=>{
if(!/b/.test(iter.key)){
iter.break();
}else{
console.log(iter.key, iter.value);
}
});
let callback = (iter) => {console.log(iter.key, ":", iter.value);}
ldb.forEach(callback, {start: "b"});
// print: b1:3, b2:4, c1:5, c2:6, d.1:7, d.2:8
ldb.forEach(callback, {start: "b", end:"c"});
// print: b1:3, b2:4
ldb.forEach(callback, {start: "c", end:"b", reverse:true});
// print: c1:5, c2:6
ldb.forEach(callback, {prefix: "d."});
// print: d.1:7, d.2:8
Leveldb.prototype.asyncPut()
ldb.asyncPut("abc", 123).then(()=>{
...
}).catch((error)=>{
console.log(error);
});
(async ()=>{
await ldb.asyncPut("abc", 1234);
})()
Leveldb.prototype.asyncDel()
ldb.asyncDel("abc").then(()=>{
...
});
(async ()=>{
await ldb.asyncDel("abc")
})()
Leveldb.prototype.asyncGet()
ldb.asyncGet("abc", 123).then((value)=>{
console.log(value)
});
(async ()=>{
let value = await ldb.asyncGet("abc");
})()
Leveldb.prototype.asyncForEach( callback, [iterator_options] )
ldb.forEach((iter)=>{
console.log(iter.key, iter.value);
});
Leveldb.prototype.getIterator([iterator_options])
let iter = ldb.getIterator({start: "b"});
while(iter.read()){
console.log(iter.key, iter.value);
}
Leveldb.prototype.addListener( type, callback, once )
- type :
ready
Trigger event after database opencreate
Triggers an event when the database is createdchanged
Triggers an event when the put or del operation is executederror
Triggers an event when an error occursclosed
Trigger event after database shutdown
ldb.addEventListener("changed", (info)=>{
console.log( info.from, info.key );
// print: put "abc"
});
ldb.put("abc", 123);
Leveldb.prototype.removeListener( type, callback )
ldb.removeEventListener("ready", func);
Leveldb.open(location, options)
let ldb = Leveldb.open("./test.db")
Leveldb.destroy(location)
Leveldb.destroy("./test.db")
Leveldb.repair(location)
Leveldb.repair("./test.db")
Iterator Options
let options = {
"start":"a",
"end": "b",
"prefix": "c",
"reverse": true,
"limit":
}