SuperAPI AI 工具集

spacetimedb-procedures

编程与开发

查看项目

更新于 10-15 20:32

技能介绍

用途:该技能面向 SpacetimeDB 的 procedure 与不通过 reducer 事务入口完成的服务端工作。reducer 用于客户端触发的、事务性状态变更;procedure 用于调用者需要返回值,或函数需要执行外部工作(如外部 HTTP 调用)的场景。

主要能力:编写可返回值的服务端函数;在服务端代码中发起 HTTP 请求;从 procedure 访问数据库;调用 reducer 逻辑;处理外部 API 密钥与失败情况。

语言要点:TypeScript 的 procedure 返回声明的 t.* 类型,接收 (ctx, args),示例形如 export const add_two_numbers = spacetimedb.procedure(...),使用 t.u32()、t.u64() 等。C# procedure 不稳定,需加 #pragma warning disable STDB_UNSTABLE 并使用 [SpacetimeDB.Procedure]。Rust procedure 不稳定,需启用 unstable feature 并使用 #[spacetimedb::procedure] 与 &mut ProcedureContext。C++ procedure 不稳定,需在包含头文件前定义 SPACETIMEDB_UNSTABLE_FEATURES。

事务与 HTTP:procedure 不会自动运行在事务中;数据库写入需用语言的 transaction helper 包裹,如 TypeScript 的 ctx.withTx(...)。不要在发起 HTTP 请求时保持事务打开,应先获取数据,再开一个短事务写入结果或调用 reducer 逻辑。外部 API 密钥与失败要显式处理,不要记录可能含隐私数据的 token 或响应体。若 procedure 调用 reducer 逻辑,需保证共享的状态变更逻辑是事务安全且可从 reducer 上下文复用的。

限制与说明:该技能资料未说明具体收费、价格、平台或效果;语言支持方面,C#、Rust、C++ 的 procedure 标注为不稳定。详细内容参见 references/functions-procedures.md;表变更细节应转向 spacetimedb-reducers 或 spacetimedb-tables。