SuperAPI AI 工具集

PocketBase API Rules

编程与开发

查看项目

更新于 10-15 20:34

技能介绍

用途:为 PocketBase 集合配置访问控制。每个集合有 List、View、Create、Update、Delete 五类规则,每条规则是必须求值为 true 才放行的过滤表达式。

关键语义:规则为空(null/locked)表示仅超级用户可执行,普通用户和访客被拒;空字符串 "" 表示包括访客在内所有人可执行;超级用户始终绕过 API 规则,规则只对普通认证记录和访客生效。

主要能力:支持比较运算符(=、!=、>、>=、<、<=)、LIKE(~、!~)、多值字段的 ?=、?!=、?>、?>=、?<、?<=、?~、?!~;逻辑运算 &&、||、括号分组。多值字段(多选、多关联、多文件)须用 ?= 而非 =。

请求上下文:内置 @request.auth.id/email/verified/collectionId/collectionName 及认证记录任意字段、@request.body.fieldName、@request.query.paramName、@request.headers.name、@request.method;可在认证记录上遍历关联,如 @request.auth.team.owner = @request.auth.id。

跨集合查询:@collection.* 执行隐式 EXISTS 子查询,用于成员关系判断;在大数据集上可能较慢,建议加索引。

字段修饰符::isset、:changed、:length、:each、:lower,用于 create/update 规则中校验字段行为,例如 @request.body.role:isset = false 阻止设置角色,@request.body.tags:length >= 2 要求至少两个标签。

日期时间:提供 @now、@second、@minute、@hour、@day、@month、@year、@todayStart/@todayEnd、@monthStart/@monthEnd、@yearStart/@yearEnd,支持 @now - 7d 等算术;另有 geoDistance(lat, lon, targetLat, targetLon) 返回米,用于位置过滤。

常见模式:仅所有者 author = @request.auth.id;仅认证用户 @request.auth.id != "";仅已验证用户 @request.auth.verified = true;基于角色 @request.auth.role = "admin" || author = @request.auth.id;团队成员用 @collection.team_members;公开读、所有者写;用 owner:changed = false 防止字段被改;用 expires > @now 实现限时访问。

限制:资料未提供具体配置界面步骤、性能基准及版本兼容说明。