SuperAPI AI 工具集

electric-schema-shapes

设计与创作

查看项目

更新于 10-15 21:37

技能介绍

用途:在新功能开发中把 Postgres schema 与 Electric shape 定义一起设计,前提是先阅读 electric-shapes 了解 ShapeStream 配置。

主要能力与用法:设计表时需知道每个 shape 只同步一张表,跨表数据用多个 shape 在客户端 join。示例建表后需执行 ALTER TABLE todos REPLICA IDENTITY FULL;,并用 new ShapeStream({ url: '/api/todos' }) 创建流。跨表场景分别创建 todoStream 与 userStream,配合 TanStack DB 在 live query 中用 .join() 合并。replica 模式可选默认(更新只发变更列)或 full(发全部列与 old_value,带宽更大,做 diff 时需要)。乐观写入需后端 txid 握手:在同一事务内执行 INSERT 后调用 SELECT pg_current_xact_id()::xid::text AS txid,返回给客户端,客户端用 awaitTxId(txid) 等待真实数据同步后再丢弃乐观状态。

常见错误:shape 不能跨表,禁止在 table 参数里写 JOIN;WHERE 中使用 enum 列需显式 ::text 转换,如 status::text IN ('active','done');乐观写入未做 txid 握手会导致 UI 闪烁。

限制:shape 不可变,动态过滤需新建 ShapeStream 实例;schema 设计同时影响 shape(读)与 ORM 查询(写)。目标版本 @electric-sql/client v1.5.10。