Object 內建對象

對象LevelDB

evelDB 是fibjs 內建的資料庫操作對象,用於建立和管理鍵值對形式的字典對象。使用LevelDB 對象,可輕鬆實現鍵值對資料的儲存、查詢、刪除、枚舉等操作。它基於Google 開源的LevelDB 實現,具有高效、可靠、可擴展等優點

LevelDB 物件的建立非常簡單,只需透過db.openLevelDB方法即可建立一個指定名稱的資料庫物件。例如:

1 2
var 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 13
var 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

檢查資料庫內是否存在指定鍵值的數據

1
Boolean LevelDB.has(Buffer key) async;

呼叫參數:

  • key:Buffer, 指定要檢查的鍵值

回傳結果:

  • Boolean, 返回鍵值是否存在

get

查詢指定鍵值的值

1
Buffer LevelDB.get(Buffer key) async;

呼叫參數:

  • key:Buffer, 指定要查詢的鍵值

回傳結果:

  • Buffer, 傳回鍵值所對應的值,若不存在,則傳回null

mget

查詢一組指定鍵值的值

1
NArray LevelDB.mget(Array keys);

呼叫參數:

  • keys: Array, 指定要查詢的鍵值數組

回傳結果:

  • NArray, 傳回包含鍵值得數組

set

設定一個鍵值數據,鍵值不存在則插入新數據

1 2
LevelDB.set(Buffer key, Buffer value) async;

呼叫參數:

  • key:Buffer, 指定要設定的鍵值
  • value:Buffer, 指定要設定的數據

mset

設定一組鍵值數據,鍵值不存在則插入新數據

1
LevelDB.mset(Object map);

呼叫參數:

  • map: Object, 指定要設定的鍵值資料字典

mremove

刪除一組指定鍵值的值

1
LevelDB.mremove(Array keys);

呼叫參數:

  • keys: Array, 指定要刪除的鍵值數組

remove

刪除指定鍵值的全部值

1
LevelDB.remove(Buffer key) async;

呼叫參數:

  • key:Buffer, 指定要刪除的鍵值

firstKey

查詢最小的key

1
Buffer LevelDB.firstKey() async;

回傳結果:


lastKey

查詢最大的key

1
Buffer LevelDB.lastKey() async;

回傳結果:


forEach

枚舉資料庫中所有的鍵值對

1
LevelDB.forEach(Function func);

呼叫參數:

  • func: Function, 枚舉回呼函數

回呼函數有兩個參數,(value, key)

1 2 3 4 5 6
var db = require("db"); var test = new db.openLevelDB("test.db"); test.forEach(function(value, key) { ... });

枚舉資料庫中所有的鍵值對

1 2
LevelDB.forEach(Buffer from, Function func);

呼叫參數:

  • from:Buffer, 枚舉的最小鍵值,枚舉時包含此鍵值
  • func: Function, 枚舉回呼函數

回呼函數有兩個參數,(value, key)

1 2 3 4 5 6
var db = require("db"); var test = new db.openLevelDB("test.db"); test.forEach("aaa", "bbb", function(value, key) { ... });

枚舉資料庫中所有的鍵值對

1 2 3
LevelDB.forEach(Buffer from, Buffer to, Function func);

呼叫參數:

  • from:Buffer, 枚舉的最小鍵值,枚舉時包含此鍵值
  • to:Buffer, 枚舉的最大鍵值,枚舉時不包含此鍵值
  • func: Function, 枚舉回呼函數

回呼函數有兩個參數,(value, key)

1 2 3 4 5 6
var db = require("db"); var test = new db.openLevelDB("test.db"); test.forEach("aaa", "bbb", function(value, key) { ... });

枚舉資料庫中所有的鍵值對

1 2
LevelDB.forEach(Object opt, Function func);

呼叫參數:

  • opt: Object, 列舉選項,支援skip, limit, reverse
  • func: Function, 枚舉回呼函數

回呼函數有兩個參數,(value, key)

1 2 3 4 5 6
var db = require("db"); var test = new db.openLevelDB("test.db"); test.forEach(function(value, key) { ... });

枚舉資料庫中所有的鍵值對

1 2 3
LevelDB.forEach(Buffer from, Object opt, Function func);

呼叫參數:

  • from:Buffer, 枚舉的最小鍵值,枚舉時包含此鍵值
  • opt: Object, 列舉選項,支援skip, limit, reverse
  • func: Function, 枚舉回呼函數

回呼函數有兩個參數,(value, key)

1 2 3 4 5 6
var db = require("db"); var test = new db.openLevelDB("test.db"); test.forEach("aaa", "bbb", function(value, key) { ... });

枚舉資料庫中所有的鍵值對

1 2 3 4
LevelDB.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 6
var db = require("db"); var test = new db.openLevelDB("test.db"); test.forEach("aaa", "bbb", function(value, key) { ... });

begin

在目前資料庫上開啟一個事務

1
LevelDB LevelDB.begin();

回傳結果:

  • LevelDB, 傳回一個開啟的事務對象

commit

提交當前事務

1
LevelDB.commit();

close

關閉目前資料庫連線或事務

1
LevelDB.close() async;

toString

傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現

1
String LevelDB.toString();

回傳結果:

  • String, 傳回物件的字串表示

toJSON

傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合

1
Value LevelDB.toJSON(String key = "");

呼叫參數:

  • key: String, 未使用

回傳結果:

  • Value, 傳回包含可JSON 序列化的值