@x12i/memorix-data
Memorix 数据平面:范围路由,记录目录,V2内容 作家 / 读者,兄弟姐妹 组成、抽象 reverse-write,关系 读取 (扩张)。
所有的主体突变都经过这个平面(或者称之为记忆/关系引擎)。永远不要用原始的Mongo驱动程序编写域文档。
安装
npm install @x12i/[email protected]
| 观众 | 用这个包吗? |
|---|---|
| 远程应用程序 | 否 ——调用 memorix-service /api/data |
| 平台/服务组合 | 是 |
写操作
add · upsert · patch · replace · remove
每一个需要 MemorixScope (orgId + agentIds[])和先决条件(absent 或者确切的 revision). 陈旧的修订→冲突。
读取操作
getContent · listContent · composeSubject · getAbstract · listAbstract
数量: countLiveContent (一对,逻辑删除的行除外), countDirectoryRecords (每个对象类型的目录文档),以及 countDirectoryRecordsWithoutContent 目录文件 contentTypes 是空的还是只有 relationships)。
默认读取返回一条逻辑V2记录(_id 剥夺了)。传递关系包括虚拟选项 { source, relationships } 扩张。 链接突变不在这里 ——使用 @x12i/memorix-relationships.
文摘reverse-write
patchAbstract →反向映射→一个具体的写入补丁。没有抽象集合/抽象 recordId.
简单的例子
import { createMongoContentWriter, createMongoContentReader } from "@x12i/memorix-data";
const writer = createMongoContentWriter({ client, /* routing */ });
const reader = createMongoContentReader({ client, /* routing */ });
await writer.add(scope, {
draft: { /* MemorixRecordDraft V2 */ },
precondition: { kind: "absent" },
});
const record = await reader.getContent(scope, {
objectType: "work-items",
contentType: "snapshots",
recordId: "WI-100",
});
const composed = await reader.composeSubject(scope, { recordId: "WI-100" });
// composed.contents → { raw: [...], snapshots: [...], ... }
相关
| 需要 | 包/ API |
|---|---|
| 信封验证 | @x12i/memorix-format |
| 四大的链接 | @x12i/memorix-relationships |
| HTTP | /api/data, /api/data/compose, /api/data/abstract |
文档
documentation/data-model.md·documentation/http-api.md- 电子书: 运行时数据客户端 · 访问模式
- 中心: https://docs.memorix.x12i.com
npm test