@bjnstnkvc/db

中文文档
21.0.1发布于 2026/10/26MITTypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 6683

用于索引DB的TypeScript数据库层,其API模型在Laravel上.

中文使用文档
文档目录6 节
  1. 目录
  2. 安装
  3. 快开始
  4. 文档
  5. 和拉拉维尔不同的地方
  6. 测试

数据库

IndexedDB 的数据库层, 上面有 API 模型 拉威尔的(单位:千美元) DB 类,一个流利的查询构建器,一个在您的应用靴子时运行的图案构建器和前向迁移.

方法名称及其语义学跟随Laravel 足够接近于 Docs 值得同时阅读 文档 链接每个 Laravel 页面。 它不是一个端口:索引DB是一个没有查询语言的密钥值商店,所以行为必须不同的地方会在出现的地方被调出. 这个项目与拉拉维尔项目无关.

目录

安装

您可以通过 npm 安装软件包 :

npm install @bjnstnkvc/db

然后导入到您的工程中

import { DB, Schema, Migration, type Blueprint } from '@bjnstnkvc/db';

该套件支持Chrome 93,Edge 93,Firefox 92和Safari 15.4或更后.

快开始

在模块范围上声明您的连接, 然后当应用靴子时迁移 :

import { DB, Schema, Migration, type Blueprint, type Transaction } from '@bjnstnkvc/db';

interface User {
    id: number;
    name: string;
    email: string;
    age: number | null;
    role: string;
    created_at: Date | null;
    updated_at: Date | null;
}

class CreateUsersTable extends Migration {
    /**
     * Run the migration.
     */
    override async up(): Promise<void> {
        await Schema.create('users', (table: Blueprint): void => {
            table.id();
            table.string('name');
            table.string('email').unique();
            table.integer('age').nullable().index();
            table.string('role').default('member').index();
            table.timestamps();
        });
    }
}

DB.configure({
    default    : 'app',
    connections: {
        app: {
            database  : 'app',
            migrations: [CreateUsersTable],
        },
    },
});

await DB.migrate('app');

DB.migrate(name) 是一能的,所以调用它 在每个靴子是预定的用途。 然后查询 :

await DB.table<User>('users').insert({ name: 'John', email: '[email protected]', age: 30 });

const users: User[] = await DB.table<User>('users')
    .where('age', '>=', 18)
    .whereIn('role', ['admin', 'owner'])
    .orderBy('created_at', 'desc')
    .limit(10)
    .get();

await DB.transaction(async (transaction: Transaction): Promise<void> => {
    const id: IDBValidKey = await transaction.table<User>('users').insertGetId({ name: 'Jane', email: '[email protected]' });

    await transaction.table('posts').insert({ user_id: id, title: 'Hello' });
});

文档

  • 配置: 宣布连接, 迁移在后头, 并解决, 断开和清理连接
  • 移徙: 仅前向移徙,移徙可能等待什么 移民状况
  • 种子:种子者,他们所写的连接,安全运行在每一个 从头开始重建
  • 定义方案: 列类型和修改器,修改和更改列, 重命名和降下列、 降下或重命名同一回调列的索引 声明、 小数、 enums、 已存储的强制行和保留表
  • 查询:限制,JSON列,塑造,终端和写作
  • 联合内部,左,右和交叉 加入,以及它们的成本
  • 分组数字 : groupBy键入总量和 having
  • 查询计划:限制如何成为一个指数范围,以及 explain()
  • 交易:交易范围、巢穴和召回可能等待的内容
  • 活动:倾听查询、交易、迁移和种子活动,以及 查询日志
  • 多个标签: 被屏蔽的升级和数据库被另一个标签所更改
  • 储存配额: 配额错误、使用估计和要求不被驱逐
  • 例外: 包投出的每一个例外,以及何时

和拉拉维尔不同的地方

  • 移徙只是向前发展. 索引DB版本不能减少, 因此没有 down() 没有 rollback(),迁移只能附加. DB.fresh(name) 重新开始. 见 移徙。 。 。 .
  • 迁移或交易只能等待此套件. IndexedDB 执行交易 {\fn华文楷体\fs16\1che0e0e0}所以等待着 {\fn华文楷体\fs16\1che0e0e0}我需要你帮助 fetch 或计时器提前结束, 下一个调用 MigrationTransactionClosedException 或者说 TransactionClosedException。网络数据属于 渗出物。见 移民可能会等待什么 财务报告和审定财务报表 召回会等什么。 。 。 .
  • Schema 更改只在迁移内运行,因为他们需要更改版本的交易. 读之方能随所出. 见 移民外的Schema。 。 。 .
  • 列类型由此软件包在写时执行,因为 IndexedDB 全部存储 对象和检查本身。 见 定义方案。 。 。 .
  • 没有 beginTransaction(), (中文(简体) ), commit() 或者说 rollBack(),在 另一个连接上的运行会加入它,因为索引数据库没有保存点。 见 交易。 。 。 .
  • 在内存中加入和分组运行,仅通过连接到达基准表,并 集合在打入的对象中命名,而不是原始的SQL. 见 联合 财务报告和审定财务报表 分组。 。 。 .
  • 查询最多使用一个索引. explain() 显示哪个。 见 查询计划。 。 。 .
  • 浏览器添加自己的失败模式: 储存配额、驱逐和持有 数据库打开。 见 储存配额 财务报告和审定财务报表 多个标签。 。 。 .

测试

IndexedDB在节点不存在,所以将测试设置指向 fake-indexeddb数字 :

单位 tests/setup.ts数字 :

import 'fake-indexeddb/auto';

进 vitest.config.ts数字 :

export default defineConfig({
    test: {
        setupFiles: ['./tests/setup.ts'],
    },
});

给每个测试文件自己的数据库名称,这样套件就不会共享状态.

版本与发布记录

@bjnstnkvc/db 共发布 85 个版本,首次发布于 2026/09/16;过去 12 个月发布了 85 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
21.0.1latest2026/10/2613 天前
21.0.02026/10/2513 天前
20.0.02026/10/1920 天前
19.1.02026/10/1920 天前
19.0.32026/10/1821 天前
19.0.22026/10/1821 天前

关于 @bjnstnkvc/db 的常见问题

@bjnstnkvc/db 是什么?

用于索引DB的TypeScript数据库层,其API模型在Laravel上.

如何安装 @bjnstnkvc/db?

在项目目录运行 npm install @bjnstnkvc/db,或使用 pnpm add / yarn add / bun add。

@bjnstnkvc/db 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@bjnstnkvc/db 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@bjnstnkvc/db 可以商用吗?

@bjnstnkvc/db 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@bjnstnkvc/db 的下载量有多少?

根据 npm 官方下载统计,@bjnstnkvc/db 在 2026/10/08 – 2026/11/06 这 30 天内被下载 6,683 次,日均约 223 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bjnstnkvc/db 还在维护吗?

最新版本 21.0.1 发布于 2026/10/26(13 天前);至今共发布 85 个版本,其中过去 12 个月发布了 85 个;首次发布于 2026/09/16。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。