@atscript/db-memory

中文文档
0.1.174发布于 2026/11/07MITTypeScriptESM + CJS零依赖近 30 天下载 3270

标记-db的内膜适配器.

中文使用文档
文档目录7 节
  1. 安装
  2. 提供者支持(只读)——主模式
  3. 存储(已读出)——测试和小表
  4. 公共 API
  5. 接受限制(v1)
  6. 文档
  7. 许可证

Atscript

@ atscript/db-memory (中文(简体) )

一次定义模型 ——从单个获取 TypeScript 类型、运行时间验证和 DB 元数据 .as 型号.

文档 • 妇女 适配器


模拟适配器 @atscript/db。 。 。 . MemoryAdapter 是一个完整的 BaseDbAdapter 与 没有引擎,没有I/O,没有持久性 ——行居普通入行JS结构. 它以两种方式运行:

  • 提供方支持(只读)——主模式. 一张桌子的行是关闭的 () => Row[] | Promise<Row[]> 查询时引用。 这样就可以了 运行时间 没有数据库的表面——从Redis + 工作登记、 工作运行快照、 任何计算出来的组合中拉链的“ 排定任务” 列表—— 被观测为真实的标记表( 在标记- ui中, 包含 @DbAction 行动作和 @InputForm(s) 不获取数据库。 写作掷出.
  • 被存储(读写)——一种二级便利. 单行活在 Map{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}给一个快速的记忆 DbSpace 测试和微小的应用表格。 满 CROUD.

过滤,排序,项目,相接,乐观-货币(OCC)版本,以及主键+唯一-索引执行都得到了支持. 叶比较语义(regex, 无效, 命令)是 JS-原生并有文件记载 - 故意不声称与SQL发动机相同(见 接受的限制) (中文(简体) ).

安装

pnpm add @atscript/db-memory

@atscript/db 是同级依赖.

提供者支持(只读)——主模式

将运行时拥有的实体作为只读表. 服务商的关闭被重新启动 每个 读取(每次更新快照),并在 syncSchema 这样它就可以关闭工厂时间不存在的依赖性:

import { createAdapter, setMemoryProvider } from "@atscript/db-memory";
import { syncSchema } from "@atscript/db/sync";
import { Job } from "./models/job.as";

// A DbSpace backed by the in-memory adapter — no engine, no I/O.
const space = createAdapter();
await syncSchema(space, [Job]);

// Make `Job` a READ-ONLY table whose rows come from a runtime closure
// (e.g. Redis keys zipped with an in-code job registry). Set AFTER syncSchema.
setMemoryProvider(space, Job, async () => await loadScheduledJobs());

// Observe it like any other atscript table.
const jobs = space.getTable(Job);
await jobs.findMany({
  filter: { scheduled: { $eq: true } },
  controls: { $sort: { nextRun: 1 }, $limit: 20 },
});
// Any write (insert/update/delete) throws: the table is provider-backed.

因为可读性是统一的, @DbAction 发现, ?$actions=true 弹琴, disabled 长相, @InputForm,和标注-ui表 / /meta 表面显示所有针对此表格的工作,没有适配器边动作代码.

存储(已读出)——测试和小表

滴入记忆 DbSpace 带有完整的 CRUD —— 一个内置 SQLite 服务的角色, 减去本地模块和 SQL 的回程 :

import { createAdapter } from "@atscript/db-memory";
import { syncSchema } from "@atscript/db/sync";
import { User } from "./models/user.as";

const space = createAdapter();
await syncSchema(space, [User]);

const users = space.getTable(User);
await users.insertOne({ id: "u1", name: "Ada" });
await users.findMany({
  filter: { name: { $regex: "^A" } },
  controls: { $sort: { name: 1 } },
});

公共 API

导出目的
createAdapter()构建一个 DbSpace 由新鲜的 MemoryAdapter 每个表格.
setMemoryProvider(space, Type, fn)后期封存服务商 Type适配器,使该表只读(提供模式).
MemoryAdapter适配器类,用于构建 DbSpace 手动new DbSpace(() => new MemoryAdapter())) (中文(简体) ).
MemoryProviderFn提供者关闭类型 : () => Row[] | Promise<Row[]>。 。 。 .
buildMemoryPredicate(filter)编译 a FilterExpr d. 将《公约》纳入《任择议定书》 (row) => boolean 上游(引擎的滤波核心).

接受限制(v1)

特意——在这里搭配一个真正的发动机对于这个适配器目标的小型计算表面来说是很难或不可能和不必要的. 所有文件都有记载,没有沉默:

  • Regex / 无效语义 - 联合来文----内在性RegExp, (中文(简体) ), /pat/flags 荣誉; $ne编号 :$exists 和蒙哥一样 与任何 SQL 引擎的字节相同 .
  • 没有整理 —— 说 @db.column.collate 过滤器和种类是密码点 / JS-内置的,所以不敏感 $eq/类型与SQLite/蒙戈不同.
  • 没有阵列元素匹配 点-路径取出器与平板和嵌入式物体路径相匹配; Mongo 式隐含数组元素 / $elemMatch 未提供匹配.
  • 非原子存储批量写入 —— 说 insertMany编号 :updateMany编号 :replaceMany编号 :deleteMany 按顺序应用,不回滚;中框冲突留下了更早的项目。 单行本是安全的。 (提供的表格是只读的,因此这绝不适用于主模式. )
  • 提供方表格只读,没有交叉请求的平面稳定性 第1页和第2页是分开的快照请求.
  • 聚合是一个进程内扫描 —— 说 $groupBy / 总量/日历桶 / $having 编号 : $count 在联署材料中运行一个带有SQL语义的快照(Null和缺失组在一起); sum编号 :avg 没有值 null) (中文(简体) ). 对小套件来说这个适配器目标很好;没有指数支持的分组.
  • 关系 $with ——通过核心的app级批量加载解决,不是本土的.
  • 无 FTS / 矢量 / 地理学 / $search ——无支持.
  • 不是生产数据库 ——没有坚持或共享任何进程.

文档

许可证

麻省理工学院

版本与发布记录

@atscript/db-memory 共发布 62 个版本,首次发布于 2026/07/09;过去 12 个月发布了 62 个版本。

版本发布日期距今
0.1.174latest2026/11/07今天
0.1.1732026/11/071 天前
0.1.1722026/11/061 天前
0.1.1712026/11/061 天前
0.1.1702026/11/061 天前
0.1.1692026/11/043 天前

关于 @atscript/db-memory 的常见问题

@atscript/db-memory 是什么?

标记-db的内膜适配器.

如何安装 @atscript/db-memory?

在项目目录运行 npm install @atscript/db-memory,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@uniqu/core(^0.2.1)、@atscript/db(^0.1.174)、@atscript/core(^0.2.9)、@atscript/typescript(^0.2.9)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@atscript/db-memory 支持 TypeScript 吗?

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

@atscript/db-memory 支持 ESM 还是 CommonJS?

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

@atscript/db-memory 可以商用吗?

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

@atscript/db-memory 的下载量有多少?

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

@atscript/db-memory 还在维护吗?

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