关于 spacetimedb-views
面向使用 SpacetimeDB 的开发者,说明如何用视图向客户端提供派生数据。内容涵盖视图选择、查询设计及相关参考资料。
主要功能
- 01定义公开且只读的视图
- 02按调用者选择视图上下文
- 03使用查询构建器筛选与联接
- 04控制读取范围并参考索引
适用场景
- 01提供筛选或联接后的数据
- 02为所有订阅者共享物化结果
- 03查询用户专属数据
- 04检查高频订阅视图的索引
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ danmossa/ spacetimedb-skills --skill spacetimedb-views安装后在 Claude Code 中输入/spacetimedb-views确认已加载。
附带文件references/functions-views.md
详细介绍
将此技能用于通过 SpacetimeDB 视图公开的派生数据。
核心视图模式
视图向客户端公开只读派生数据。对于应在服务器端计算而非重复存储到另一个表中的筛选或联接结果,请使用视图。
TypeScript 视图结构:
export const high_scorers = spacetimedb.anonymousView(
{ name: "high_scorers", public: true },
t.array(players.rowType),
(ctx) =>
ctx.from.players
.where((p) => p.score.gte(1000n))
.where((p) => p.name.ne("BOT")),
);
设计规则
- 视图必须是公开的,并且必须有明确的名称。
- 视图是只读的。写入请使用 reducer,存储状态请使用表。
- 当所有调用方看到的结果都相同时,请使用
anonymousView/AnonymousViewContext;SpacetimeDB 可以在订阅者之间共享一个物化结果。 - 仅当结果取决于调用方时,才使用按用户区分的
ViewContext,例如“我的库存”或私信。 - 保持读取集较小。筛选和联接时,优先使用索引查找或模块端查询构建器。
- 不要默认在视图中使用
.iter();请查阅参考资料,了解查询构建器语法、.iter()的限制以及主键推断的详细信息。
参考索引
| 需求 | 打开 |
|---|---|
| 视图定义和示例 | references/functions-views.md |
指引
- 当用户需要派生或筛选后的数据,而非重复存储的行时,请使用视图。
- 如需了解表达式或查询语法的详细信息,请查阅 SQL 参考。
- 在添加可能成为高频订阅路径的视图之前,请检查表索引。
评论
支持 Markdown