用途:为 PocketBase 设计集合与数据库模式,适用于创建集合、设计 schema、添加字段、配置关系及在多种集合类型间做选择。
集合类型:Base 集合为普通数据集合,系统字段有 id、created、updated。Auth 集合在基础字段上增加 email、emailVisibility、verified、password、tokenKey,系统字段不可删除,可在集合选项中关闭邮箱/密码认证。View 集合为只读,基于 SQL SELECT 查询,不支持增删改,字段由查询自动推断,适合聚合、联表与计算视图,支持 list/view 的 API 规则,也可用于关系。
字段类型:text、editor、number、bool、email、url、date、select、file、relation、json、autodate、password。注意所有类型默认取零值而非 null,只有 json 字段可为 null。字段修饰符包括 required、unique、presentable、hidden、:autogenerate。
关系模式:一对多为 posts.author -> users(maxSelect: 1);多对多为 posts.tags -> tags(maxSelect: 0 表示不限),过滤用 tags ?= "TAG_ID"。无需显式反向关系字段,可在 API 规则使用 @collection.posts.author,或用 expand 从任意一侧展开。关系字段可设 cascadeDelete: true,删除被引用记录时级联删除指向它的记录,默认 false(置为空字符串)。集合可自引用,如 categories.parent -> categories。
索引:在集合设置中创建,格式为 CREATE [UNIQUE] INDEX idx_name ON collection (field1, field2),唯一索引可实现复合唯一,支持部分索引与关系字段索引。
Auth 集合:OAuth2 按提供商启用并填 client ID 与 secret,PocketBase 处理完整流程;OTP 通过邮件发送验证码,配置 otp.enabled、duration、length;MFA 在初级认证后要求第二因子,配置 mfa.enabled、duration、rule;密码认证默认启用,可设 minPasswordLength,也可完全关闭。认证选项包括 authToken.duration、passwordAuth.enabled、passwordAuth.identityFields、oauth2.enabled、otp.enabled。
最佳实践:未来可能多于两种状态时用 select 而非 bool;外键用 relation 而非 text,以获得级联、expand 与类型安全;json 无模式,谨慎使用;集合名用小写 snake_case;尽早为过滤或排序字段建索引;maxSelect 为 1 返回字符串 ID,大于 1 或 0 返回数组。
限制:未提供具体安装命令、版本要求与完整代码示例;View 集合只读且 API 规则仅支持 list/view。