Loading...
Loading...
Compare original and translation side by side
undefinedundefined
The core `deepbase` package depends on `deepbase-json` and `nanoid`. No other drivers are required unless explicitly used.
核心`deepbase`包依赖`deepbase-json`和`nanoid`。除非明确使用,否则无需安装其他驱动。// ES Modules (recommended)
import DeepBase from 'deepbase';
import { DeepBase, DeepBaseDriver } from 'deepbase';
// CommonJS
const { DeepBase } = require('deepbase');
// Individual drivers
import { JsonDriver } from 'deepbase-json';
import { MongoDriver } from 'deepbase-mongodb';
import { SqliteDriver } from 'deepbase-sqlite';
import { RedisDriver } from 'deepbase-redis';
import { RedisDriver as RedisJsonDriver } from 'deepbase-redis-json';
import { IndexedDBDriver } from 'deepbase-indexeddb';// ES Modules (recommended)
import DeepBase from 'deepbase';
import { DeepBase, DeepBaseDriver } from 'deepbase';
// CommonJS
const { DeepBase } = require('deepbase');
// Individual drivers
import { JsonDriver } from 'deepbase-json';
import { MongoDriver } from 'deepbase-mongodb';
import { SqliteDriver } from 'deepbase-sqlite';
import { RedisDriver } from 'deepbase-redis';
import { RedisDriver as RedisJsonDriver } from 'deepbase-redis-json';
import { IndexedDBDriver } from 'deepbase-indexeddb';import DeepBase from 'deepbase';
const db = new DeepBase({ path: './data', name: 'app' });
await db.connect();
await db.set('config', 'theme', 'dark');
const theme = await db.get('config', 'theme'); // 'dark'
await db.disconnect();connect()import DeepBase from 'deepbase';
const db = new DeepBase({ path: './data', name: 'app' });
await db.connect();
await db.set('config', 'theme', 'dark');
const theme = await db.get('config', 'theme'); // 'dark'
await db.disconnect();connect()import DeepBase from 'deepbase';
import { JsonDriver } from 'deepbase-json';
import { MongoDriver } from 'deepbase-mongodb';
const db = new DeepBase([
new MongoDriver({ url: 'mongodb://localhost:27017', database: 'myapp', collection: 'data' }),
new JsonDriver({ path: './backup', name: 'fallback' })
], {
writeAll: true, // Write to all drivers (default: true)
readFirst: true, // Read from first available (default: true)
failOnPrimaryError: false // Continue if primary fails
});
await db.connect();
// Writes go to both MongoDB and JSON; reads try MongoDB first, fall back to JSONimport DeepBase from 'deepbase';
import { JsonDriver } from 'deepbase-json';
import { MongoDriver } from 'deepbase-mongodb';
const db = new DeepBase([
new MongoDriver({ url: 'mongodb://localhost:27017', database: 'myapp', collection: 'data' }),
new JsonDriver({ path: './backup', name: 'fallback' })
], {
writeAll: true, // 写入所有驱动(默认:true)
readFirst: true, // 优先从第一个可用驱动读取(默认:true)
failOnPrimaryError: false // 主驱动故障时继续执行
});
await db.connect();
// 写入操作会同时同步到MongoDB和JSON;读取操作优先尝试MongoDB,失败则回退到JSON| Method | Signature | Description |
|---|---|---|
| | Get value at path. Returns |
| | Set value at path. Last argument is the value. |
| | Delete value at path. |
| | Increment numeric value. |
| | Decrement numeric value. |
| | Add item with auto-generated ID. Returns full path array. |
| | Atomic update — passes current value to |
| 方法 | 签名 | 描述 |
|---|---|---|
| | 获取指定路径的值。若未找到则返回 |
| | 设置指定路径的值。最后一个参数为要设置的值。 |
| | 删除指定路径的值。 |
| | 递增数值类型的值。 |
| | 递减数值类型的值。 |
| | 添加带自动生成ID的项。返回完整路径数组。 |
| | 原子更新——将当前值传入 |
| Method | Signature | Description |
|---|---|---|
| | Get keys at path (array of strings). |
| | Get values at path. |
| | Get |
| | Remove and return the last item. |
| | Remove and return the first item. |
| 方法 | 签名 | 描述 |
|---|---|---|
| | 获取指定路径下的所有键(字符串数组)。 |
| | 获取指定路径下的所有值。 |
| | 获取指定路径下的 |
| | 删除并返回最后一项。 |
| | 删除并返回第一项。 |
| Method | Description |
|---|---|
| Connect all drivers. Returns |
| Disconnect all drivers. |
| 方法 | 描述 |
|---|---|
| 连接所有驱动。返回 |
| 断开所有驱动的连接。 |
| Method | Description |
|---|---|
| Get driver instance by index (default: 0). |
| Get array of all driver instances. |
| 方法 | 描述 |
|---|---|
| 通过索引获取驱动实例(默认:0)。 |
| 获取所有驱动实例的数组。 |
// Migrate data from driver 0 to driver 1
await db.migrate(0, 1, {
clear: true, // Clear target first (default: true)
batchSize: 100, // Progress callback interval
onProgress: ({ migrated, errors, current }) => console.log(`${migrated} items`)
});
// Sync primary (index 0) to all other drivers
await db.syncAll({ clear: true });// 将数据从驱动0迁移到驱动1
await db.migrate(0, 1, {
clear: true, // 先清空目标驱动(默认:true)
batchSize: 100, // 进度回调的间隔
onProgress: ({ migrated, errors, current }) => console.log(`${migrated} items`)
});
// 将主驱动(索引0)同步到所有其他驱动
await db.syncAll({ clear: true });new DeepBase(drivers, {
writeAll: true, // Write to all drivers
readFirst: true, // Read from first available driver in order
failOnPrimaryError: true, // Throw if primary driver (index 0) fails
lazyConnect: true, // Auto-connect on first operation
timeout: 0, // Global timeout in ms (0 = disabled)
readTimeout: 0, // Override for read operations
writeTimeout: 0, // Override for write operations
connectTimeout: 0 // Override for connect
});new DeepBase(drivers, {
writeAll: true, // 写入所有驱动
readFirst: true, // 按顺序从第一个可用驱动读取
failOnPrimaryError: true, // 主驱动(索引0)故障时抛出错误
lazyConnect: true, // 首次操作时自动连接
timeout: 0, // 全局超时时间(毫秒,0表示禁用)
readTimeout: 0, // 覆盖读取操作的超时时间
writeTimeout: 0, // 覆盖写入操作的超时时间
connectTimeout: 0 // 覆盖连接操作的超时时间
});| Driver | Key Options |
|---|---|
| |
| |
| |
| |
| |
| |
| 驱动 | 关键选项 |
|---|---|
| |
| |
| |
| |
| |
| |
package.jsondeepbasenpm installdb.get()db.set()db.connect(){ connected, total }disconnect()add()add()add()await db.get(...userPath)upd()upd()get()set()failOnPrimaryError: falsedeepbase-redis-jsondeepbase-redisnpm installpackage.jsondeepbasedb.get()db.set(){ connected, total }db.connect()disconnect()add()add()add()await db.get(...userPath)upd()upd()get()set()failOnPrimaryError: falsedeepbase-redis-jsondeepbase-redisawait db.set('users', 'alice', { name: 'Alice', age: 30 });
await db.set('users', 'alice', 'email', 'alice@example.com');
const user = await db.get('users', 'alice');
// { name: 'Alice', age: 30, email: 'alice@example.com' }await db.set('users', 'alice', { name: 'Alice', age: 30 });
await db.set('users', 'alice', 'email', 'alice@example.com');
const user = await db.get('users', 'alice');
// { name: 'Alice', age: 30, email: 'alice@example.com' }const userPath = await db.add('users', { name: 'Bob', email: 'bob@example.com' });
// userPath = ['users', 'aB3xK9mL2n']
const user = await db.get(...userPath);const userPath = await db.add('users', { name: 'Bob', email: 'bob@example.com' });
// userPath = ['users', 'aB3xK9mL2n']
const user = await db.get(...userPath);await db.set('stats', 'views', 0);
await db.inc('stats', 'views'); // 1
await db.inc('stats', 'views', 10); // 11
await db.dec('stats', 'views', 5); // 6await db.set('stats', 'views', 0);
await db.inc('stats', 'views'); // 1
await db.inc('stats', 'views', 10); // 11
await db.dec('stats', 'views', 5); // 6await db.upd('user', 'name', name => name.toUpperCase());await db.upd('user', 'name', name => name.toUpperCase());const userKeys = await db.keys('users');
const userList = await db.values('users');
const userEntries = await db.entries('users'); // [[id, data], ...]const userKeys = await db.keys('users');
const userList = await db.values('users');
const userEntries = await db.entries('users'); // [[id, data], ...]const last = await db.pop('queue'); // Remove and return last item
const first = await db.shift('queue'); // Remove and return first itemconst last = await db.pop('queue'); // 删除并返回最后一项
const first = await db.shift('queue'); // 删除并返回第一项import { JsonDriver } from 'deepbase-json';
import { stringify, parse } from 'flatted';
const db = new DeepBase(new JsonDriver({
path: './data',
name: 'circular',
stringify,
parse
}));import { JsonDriver } from 'deepbase-json';
import { stringify, parse } from 'flatted';
const db = new DeepBase(new JsonDriver({
path: './data',
name: 'circular',
stringify,
parse
}));const db = new DeepBase([
new MongoDriver({ url: process.env.MONGO_URL, database: 'app' }),
new JsonDriver({ path: './backup' }),
new RedisDriver({ url: process.env.REDIS_URL })
], { writeAll: true, failOnPrimaryError: false });const db = new DeepBase([
new MongoDriver({ url: process.env.MONGO_URL, database: 'app' }),
new JsonDriver({ path: './backup' }),
new RedisDriver({ url: process.env.REDIS_URL })
], { writeAll: true, failOnPrimaryError: false });import { DeepBaseDriver } from 'deepbase';
class MyDriver extends DeepBaseDriver {
async connect() { /* ... */ this._connected = true; }
async disconnect() { /* ... */ }
async get(...args) { /* ... */ }
async set(...args) { /* ... */ }
async del(...args) { /* ... */ }
async inc(...args) { /* ... */ }
async dec(...args) { /* ... */ }
async add(...args) { /* ... */ }
async upd(...args) { /* ... */ }
}DeepBaseDriverkeys()values()entries()get()import { DeepBaseDriver } from 'deepbase';
class MyDriver extends DeepBaseDriver {
async connect() { /* ... */ this._connected = true; }
async disconnect() { /* ... */ }
async get(...args) { /* ... */ }
async set(...args) { /* ... */ }
async del(...args) { /* ... */ }
async inc(...args) { /* ... */ }
async dec(...args) { /* ... */ }
async add(...args) { /* ... */ }
async upd(...args) { /* ... */ }
}DeepBaseDriverkeys()values()entries()get()All drivers must extend DeepBaseDrivertimeoutreadTimeoutwriteTimeoutfailOnPrimaryError: trueconnect(){ connected, total }writeAll: truedb.migrate()db.syncAll()db.syncAll()All drivers must extend DeepBaseDrivertimeoutreadTimeoutwriteTimeoutfailOnPrimaryError: trueconnect(){ connected, total }writeAll: truedb.migrate()db.syncAll()db.syncAll()examples/packages/corepackages/driver-jsonpackages/driver-sqlitepackages/driver-mongodbpackages/driver-redispackages/driver-redis-jsonpackages/driver-indexeddbexamples/packages/corepackages/driver-jsonpackages/driver-sqlitepackages/driver-mongodbpackages/driver-redispackages/driver-redis-jsonpackages/driver-indexeddb