對象LevelDB
evelDB 是fibjs 內建的資料庫操作對象,用於建立和管理鍵值對形式的字典對象。使用LevelDB 對象,可輕鬆實現鍵值對資料的儲存、查詢、刪除、枚舉等操作。它基於Google 開源的LevelDB 實現,具有高效、可靠、可擴展等優點
LevelDB 物件的建立非常簡單,只需透過db.openLevelDB方法即可建立一個指定名稱的資料庫物件。例如:
1
2var db = require("db");
var test = db.openLevelDB("test.db");
其中,db為fibjs 的資料庫操作對象,openLevelDB 方法用於開啟leveldb 資料庫,test.db 為資料庫名稱,函數傳回的test物件即為操作資料庫的物件。
LevelDB 物件支援的主要操作包括:
- set(key, value):設定一個鍵值數據,鍵值不存在則插入新數據。
- get(key):查詢指定鍵值的值。
- has(key):判斷指定鍵值是否存在。
- remove(key):刪除指定鍵值的全部值。
- forEach(func):列舉資料庫中所有的鍵值對。
- between(from, to, func):枚舉資料庫中鍵值在from 和to 之間的鍵值對。
- toJSON(key):傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合。
- begin():在目前資料庫上開啟一個交易。
- commit():提交目前事務。
- close():關閉目前資料庫連線或交易。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13var db = require("db");
var test = db.openLevelDB("test.db");
test.set("test_key", "test_value");
var value = test.get("test_key");
console.log("test_key:", value.toString());
test.remove("test_key");
console.log("has test_key:", test.has("test_key"));
test.close();
以上是LevelDB 物件的基本用法及範例,可以方便靈活地操作鍵值對資料。在實際應用中,它可以被用於儲存、快取、日誌等場景,提高資料讀寫效率、簡化程式邏輯、減少開發複雜度等。
繼承關係
成員函數
has
檢查資料庫內是否存在指定鍵值的數據
1Boolean LevelDB.has(Buffer key) async;
呼叫參數:
- key:Buffer, 指定要檢查的鍵值
回傳結果:
- Boolean, 返回鍵值是否存在
get
查詢指定鍵值的值
1Buffer LevelDB.get(Buffer key) async;
呼叫參數:
- key:Buffer, 指定要查詢的鍵值
回傳結果:
- Buffer, 傳回鍵值所對應的值,若不存在,則傳回null
mget
查詢一組指定鍵值的值
1NArray LevelDB.mget(Array keys);
呼叫參數:
- keys: Array, 指定要查詢的鍵值數組
回傳結果:
- NArray, 傳回包含鍵值得數組
set
設定一個鍵值數據,鍵值不存在則插入新數據
1
2LevelDB.set(Buffer key,
Buffer value) async;
呼叫參數:
mset
設定一組鍵值數據,鍵值不存在則插入新數據
1LevelDB.mset(Object map);
呼叫參數:
- map: Object, 指定要設定的鍵值資料字典
mremove
刪除一組指定鍵值的值
1LevelDB.mremove(Array keys);
呼叫參數:
- keys: Array, 指定要刪除的鍵值數組
remove
刪除指定鍵值的全部值
1LevelDB.remove(Buffer key) async;
呼叫參數:
- key:Buffer, 指定要刪除的鍵值
firstKey
查詢最小的key
1Buffer LevelDB.firstKey() async;
回傳結果:
- Buffer, 回傳最小的key
lastKey
查詢最大的key
1Buffer LevelDB.lastKey() async;
回傳結果:
- Buffer, 返回最大的key
forEach
枚舉資料庫中所有的鍵值對
1LevelDB.forEach(Function func);
呼叫參數:
- func: Function, 枚舉回呼函數
回呼函數有兩個參數,(value, key)
1
2
3
4
5
6var db = require("db");
var test = new db.openLevelDB("test.db");
test.forEach(function(value, key) {
...
});
枚舉資料庫中所有的鍵值對
1
2LevelDB.forEach(Buffer from,
Function func);
呼叫參數:
- from:Buffer, 枚舉的最小鍵值,枚舉時包含此鍵值
- func: Function, 枚舉回呼函數
回呼函數有兩個參數,(value, key)
1
2
3
4
5
6var db = require("db");
var test = new db.openLevelDB("test.db");
test.forEach("aaa", "bbb", function(value, key) {
...
});
枚舉資料庫中所有的鍵值對
1
2
3LevelDB.forEach(Buffer from,
Buffer to,
Function func);
呼叫參數:
回呼函數有兩個參數,(value, key)
1
2
3
4
5
6var db = require("db");
var test = new db.openLevelDB("test.db");
test.forEach("aaa", "bbb", function(value, key) {
...
});
枚舉資料庫中所有的鍵值對
1
2LevelDB.forEach(Object opt,
Function func);
呼叫參數:
- opt: Object, 列舉選項,支援skip, limit, reverse
- func: Function, 枚舉回呼函數
回呼函數有兩個參數,(value, key)
1
2
3
4
5
6var db = require("db");
var test = new db.openLevelDB("test.db");
test.forEach(function(value, key) {
...
});
枚舉資料庫中所有的鍵值對
1
2
3LevelDB.forEach(Buffer from,
Object opt,
Function func);
呼叫參數:
- from:Buffer, 枚舉的最小鍵值,枚舉時包含此鍵值
- opt: Object, 列舉選項,支援skip, limit, reverse
- func: Function, 枚舉回呼函數
回呼函數有兩個參數,(value, key)
1
2
3
4
5
6var db = require("db");
var test = new db.openLevelDB("test.db");
test.forEach("aaa", "bbb", function(value, key) {
...
});
枚舉資料庫中所有的鍵值對
1
2
3
4LevelDB.forEach(Buffer from,
Buffer to,
Object opt,
Function func);
呼叫參數:
- from:Buffer, 枚舉的最小鍵值,枚舉時包含此鍵值
- to:Buffer, 枚舉的最大鍵值,枚舉時不包含此鍵值
- opt: Object, 列舉選項,支援skip, limit, reverse
- func: Function, 枚舉回呼函數
回呼函數有兩個參數,(value, key)
1
2
3
4
5
6var db = require("db");
var test = new db.openLevelDB("test.db");
test.forEach("aaa", "bbb", function(value, key) {
...
});
begin
在目前資料庫上開啟一個事務
1LevelDB LevelDB.begin();
回傳結果:
- LevelDB, 傳回一個開啟的事務對象
commit
提交當前事務
1LevelDB.commit();
close
關閉目前資料庫連線或事務
1LevelDB.close() async;
toString
傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現
1String LevelDB.toString();
回傳結果:
- String, 傳回物件的字串表示
toJSON
傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合
1Value LevelDB.toJSON(String key = "");
呼叫參數:
- key: String, 未使用
回傳結果:
- Value, 傳回包含可JSON 序列化的值