# @atscript/db-memory 中文文档

规范地址：https://npmcn.com/package/%40atscript/db-memory/

版本：0\.1\.174
npm 元数据更新时间：2026-11-06T20:25:30.840Z
中文译文更新时间：2026-11-07T03:59:29.075Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40atscript/db-memory
原文对照：https://npmcn.com/package/%40atscript/db-memory/?lang=original
项目主页：https://github.com/moostjs/atscript-db/tree/main/packages/db-memory#readme
源码仓库：https://github.com/moostjs/atscript-db

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：242 kB，6 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：@uniqu/core ^0\.2\.1，@atscript/db ^0\.1\.174，@atscript/core ^0\.2\.9，@atscript/typescript ^0\.2\.9
- 首次发布：2026-07-09T10:10:16.795Z
- 最新版本发布：2026-11-06T20:25:30.643Z
- 近 30 天下载量：3270（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：62（近 12 个月 62 个）

## 中文简介

标记-db的内膜适配器.

## 安装

```sh
npm install @atscript/db-memory
```

也可以使用：`pnpm add @atscript/db-memory`、`yarn add @atscript/db-memory`、`bun add @atscript/db-memory`

## README

![Atscript](https://db.atscript.dev/logo.svg)

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

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

[文档](https://db.atscript.dev/) • 妇女 [适配器](https://db.atscript.dev/adapters)

* * *

模拟适配器 `@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发动机相同(见 [接受的限制](https://npmcn.com/package/%40atscript/db-memory/#readme-accepted-limitations-v1)) (中文(简体) ).

## 安装

```bash
pnpm add @atscript/db-memory
```

`@atscript/db` 是同级依赖.

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

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

```typescript
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 的回程 :

```typescript
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`** ——无支持.
-   **不是生产数据库** ——没有坚持或共享任何进程.

## 文档

-   [完整文档](https://db.atscript.dev/)
-   [适配器](https://db.atscript.dev/adapters)

## 许可证

麻省理工学院

## 常见问题

### @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 和提交记录判断。

