SuperAPI AI 工具集

rdc-schema

数据与分析

查看项目

更新于 10-16 07:26

技能介绍

用途:为接口返回的 JSON 定义 schema,并将其组合以表达期望数据结构,是 data-client 中数据规范化与反规范化的基础。

主要能力:对象类含 Entity(单个唯一对象,反规范化)、new Union(Entity)(多态对象)、{[key:string]: Schema}(不可变对象)、new Invalidate(Entity|Union)(删除实体);列表类含 new Collection([Schema])(可变/可增长列表)、[Schema](不可变列表)、new All(Entity|Union)(某类所有实体);映射类含 new Collection(Values(Schema))(可变映射)、new Values(Schema)(不可变映射);派生/选择器模式含 new Query(Queryable),可编写记忆化的程序化选择器,例如基于 getList.schema 统计未完成待办或用 Object.groupBy 按 userId 分组。

Entity 最佳实践:每个 Entity 子类需为所有非可选序列化字段定义默认值;仅当主键不等于 id 时重写 pk(),其返回类型为 number | string | undefined;重写 Entity.process(value, parent, key, args) 可依据 args/url 插入字段;可选的 static schema 用于嵌套 schema 或反序列化函数;设计 API 时优先嵌套实体。

生命周期:规范化顺序为 process() → validate() → pk(),若已存在则 mergeWithStore()(调用 shouldUpdate(),可能调用 shouldReorder() 与 merge()),并通过 mergeMetaWithStore() 处理元数据;反规范化顺序为 createIfValid() → validate() → fromJS()。

Union 多态 schema:用 Union 加判别字段定义多态资源,例如 Event 抽象类共享 type 判别字段,PullRequestEvent、IssuesEvent 等子类通过 schema: new Union({PullRequestEvent, IssuesEvent, ...}, 'type') 组合。

用法要点与限制:需在每个 resource/entity/collection 上设置 schema 以启用规范化;对深层嵌套或关联数据需定义恰当 schema;避免忘记使用 fromJS() 或为类字段赋默认值。详细 API 参见 Entity、Collection、Union、Query、Invalidate、Values、All、Array、Object、relational-data、computed-properties、partial-entities、side-effects、sorting-client-side 等参考文档。该资料未提供 npm 安装命令、依赖版本、具体代码完整示例或收费信息。