SuperAPI AI 工具集

convex-helpers-guide

通用与其它

查看项目

更新于 10-15 21:51

技能介绍

convex-helpers 是 Convex 官方提供的实用工具集合,用于在 Convex 后端中复用经过验证的常见模式,避免重复造轮子。安装方式为:npm install convex-helpers。

主要能力与用途:

  1. 关系助手(relationships):以可读、类型安全的方式遍历表间关系。提供 getOneFrom(取单个关联文档)、getManyFrom(取多个关联文档)、getManyVia(经中间表取多对多关系)。适用于跨表加载关联数据、沿外键关系取数、构建嵌套数据结构。
  2. 自定义函数(customFunctions):这是 Convex 对行级安全(RLS)的替代方案,也是资料中标注最重要的用途。用 customQuery、customMutation 等包装器为所有查询与变更自动加上鉴权和访问控制,可把用户、组织、角色等信息注入 ctx。适用于数据保护与访问控制、多租户应用、RBAC、仅内部函数、统一日志监控。相比 RLS 的优点:用 TypeScript 而非 SQL 策略、具备完整类型安全、易测试调试、比数据库策略更灵活、可覆盖整个后端。
  3. 过滤器(filter):对数据库查询应用复杂 TypeScript 过滤逻辑,适合按计算值过滤、索引难以表达的逻辑、结果集较小的场景。资料提示仍应优先使用索引。
  4. 会话(sessions):即使用户未登录也能跨请求跟踪。通过 SessionIdArg 在参数中加入 sessionId,客户端用 useSessionId。适用于匿名用户跟踪、游客购物车、注册前行为跟踪、无鉴权 A/B 测试。
  5. Zod 校验(zod):用 Zod schema 替代 Convex 校验器,通过 zCustomQuery 等使用,适合项目已使用 Zod、需要更复杂校验或自定义错误信息。
  6. 数据迁移(migrations):用 makeMigration 安全执行数据迁移,运行命令形如:npx convex run migrations:addDefaultPriority。适用于回填新字段、转换已有数据、跨 schema 版本迁移。
  7. 触发器(triggers):数据变化时自动执行代码,如发送通知、更新关联记录、记录变更、维护计算字段。
  8. 替代方案:还提供模仿传统 RLS 的行级安全助手,但资料指出 Convex 推荐优先使用自定义函数,因为其在编译期类型安全、更显式、错误信息更好、更易测试。

使用方式:按需从 convex-helpers/server/relationships、convex-helpers/server/customFunctions、convex-helpers/server/filter、convex-helpers/react/sessions、convex-helpers/server/zod、convex-helpers/server/migrations、convex-helpers/server/triggers 等路径导入相应工具,在 Convex 的 query、mutation 定义中组合使用。

限制:资料未提供版本、许可、收费、性能基准、平台支持范围等具体信息,暂未提供。使用 filter 时资料建议在可行情况下优先使用索引。