LiteDB 数据持久化 API 文档
LiteDB 是一个轻量级的 NoSQL 数据库,专为 EasyBot 插件提供高性能的数据持久化解决方案。每个插件拥有独立的数据库文件(插件ID.ldb),支持 JSON 格式数据存储、事务、索引和查询等功能。
命名空间概述
declare namespace litedb {
// 提供完整的键值对存储和数据库管理功能
}
核心概念
- 集合 (Collection): 类似于关系数据库中的表,用于组织相关数据
- 键值对 (Key-Value): 基本存储单元,键为字符串,值可以是任意 JSON 序列化的数据
- 独立数据库: 每个插件拥有独立的 .ldb 文件,确保数据隔离
基础操作函数
GetDbPath()
功能描述: 获取当前插件的数据库文件路径。
语法:
function GetDbPath(): string
参数: 无
返回值: string - 数据库文件的完整路径
使用示例:
const dbPath = litedb.GetDbPath();
logger.info(`数据库文件位置: ${dbPath}`);
// 输出: 数据库文件位置: /path/to/plugins/your-plugin-id.ldb
注意事项:
- 路径由系统自动生成,基于插件ID
- 文件会在首次使用时自动创建
Set()
功能描述: 在指定集合中设置键值对,支持任意 JSON 序列化的数据类型。
语法:
function Set(collection: string, key: string, value: any): boolean
参数:
collection(string): 集合名称key(string): 键名value(any): 要存储的值(支持对象、数组、基本类型等)
返回值: boolean - 操作是否成功
使用示例:
// 存储基本类型
litedb.Set("settings", "server_name", "我的服务器");
litedb.Set("settings", "max_players", 100);
litedb.Set("settings", "enabled", true);
// 存储复杂对象
const playerData = {
name: "Steve",
level: 25,
inventory: ["diamond_sword", "iron_armor"],
stats: { hp: 100, mp: 50 }
};
litedb.Set("players", "steve_uuid", playerData);
// 存储数组
const serverList = ["server1", "server2", "server3"];
litedb.Set("config", "servers", serverList);
注意事项:
- 如果键已存在,会覆盖原有值
- 值必须是可 JSON 序列化的数据
- 集合不存在时会自动创建
Get()
功能描述: 从指定集合中获取键对应的值。
语法:
function Get(collection: string, key: string): any
参数:
collection(string): 集合名称key(string): 键名
返回值: any - 存储的值,如果不存在则返回 null
使用示例:
const serverName = litedb.Get("settings", "server_name");
const playerData = litedb.Get("players", "steve_uuid");
if (playerData) {
logger.info(`玩家 ${playerData.name} 等级: ${playerData.level}`);
} else {
logger.info("玩家数据不存在");
}
注意事项:
- 返回的是原始存储的数据类型
- 不存在的键返回
null,需要进行空值检查
GetValue()
功能描述: 获取键值对,如果不存在则返回指定的默认值。
语法:
function GetValue(collection: string, key: string, defaultValue?: any): any
参数:
collection(string): 集合名称key(string): 键名defaultValue(any, 可选): 默认值
返回值: any - 存储的值或默认值
使用示例:
const maxPlayers = litedb.GetValue("settings", "max_players", 20);
const welcomeMessage = litedb.GetValue("config", "welcome_msg", "欢迎来到服务器!");
// 复杂默认值
const defaultConfig = { theme: "dark", language: "zh-CN" };
const userConfig = litedb.GetValue("user", "ui_config", defaultConfig);
注意事项:
- 推荐使用此方法而不是
Get()来避免空值处理 - 默认值不会自动存储到数据库中
类型安全的获取函数
GetString()
功能描述: 获取字符串类型的值,确保类型安全。
语法:
function GetString(collection: string, key: string, defaultValue?: string): string
参数:
collection(string): 集合名称key(string): 键名defaultValue(string, 可选): 默认字符串值
返回值: string - 字符串值
使用示例:
const serverName = litedb.GetString("settings", "server_name", "默认服务器");
const playerName = litedb.GetString("players", "current_player", "未知玩家");
GetNumber()
功能描述: 获取数字类型的值,确保类型安全。
语法:
function GetNumber(collection: string, key: string, defaultValue?: number): number
参数:
collection(string): 集合名称key(string): 键名defaultValue(number, 可选): 默认数字值
返回值: number - 数字值
使用示例:
const maxPlayers = litedb.GetNumber("settings", "max_players", 20);
const playerLevel = litedb.GetNumber("players", "steve_level", 1);
const serverPort = litedb.GetNumber("config", "port", 25565);
GetBoolean()
功能描述: 获取布尔类型的值,确保类型安全。
语法:
function GetBoolean(collection: string, key: string, defaultValue?: boolean): boolean
参数:
collection(string): 集合名称key(string): 键名defaultValue(boolean, 可选): 默认布尔值
返回值: boolean - 布尔值