Convex Function Creator 是一个面向 Convex 后端的开发技能,用于生成安全、类型安全的 Convex 函数。它帮助开发者在实现新 API 端点时,遵循 Convex 的最佳实践,包括参数验证、返回值验证、身份认证、授权检查以及错误处理。
用途
该技能适用于以下场景:
- 创建新的查询函数(读取数据)
- 创建新的变更函数(写入数据)
- 创建新的动作函数(调用外部 API、长时间运行的任务)
- 为 Convex 后端添加 API 端点
主要能力
该技能能够生成三种类型的 Convex 函数:
-
查询(Queries):只读函数,只能从数据库读取数据,不能修改数据或调用外部 API。查询具有缓存和响应式特性,并在事务中运行。
-
变更(Mutations):事务性写入函数,可以读写数据库,但不能调用外部 API。它们在 ACID 事务中运行,并在冲突时自动重试。
-
动作(Actions):非事务性函数,可以调用外部 API(如 fetch、AI 等),可以通过
ctx.runMutation调用变更,但不能直接访问数据库,且没有自动重试。当需要使用 Node.js API 时,需在文件顶部添加"use node"指令。
此外,该技能还支持内部函数(Internal Functions),用于仅限后端调用的场景,例如由调度器或其他函数调用。
使用方式
该技能通过提供代码模板和最佳实践来指导开发。开发者需要定义参数验证(args)、返回值验证(returns)、身份认证检查(ctx.auth.getUserIdentity())、授权检查(所有权/权限)以及错误处理。所有 Promise 必须被 await,查询应使用索引而非 .filter(),调度函数应使用 internal.* 而非 api.*。
当动作需要使用 Node.js 特定 API(如 crypto、第三方 SDK)时,必须在文件顶部添加 "use node",且该文件只能包含动作,不能包含查询或变更。建议将查询和变更放在不带 "use node" 的文件中,将需要 Node.js 的动作放在单独的文件中。
适用场景
该技能适用于任何使用 Convex 作为后端的项目,特别是需要快速、安全地添加 API 端点的场景。它适合需要确保数据验证、认证和授权正确性的开发工作。
限制
该技能要求开发者遵循 Convex 的特定模式和约束,例如查询不能修改数据、变更不能调用外部 API、动作不能直接访问数据库等。此外,使用 "use node" 的文件只能包含动作,且需要 Node.js API 的动作必须单独放置。该技能不涉及具体的收费、价格或平台信息,这些内容暂未提供。