[ PROMPT_NODE_25916 ]
PocketBase API Rules
[ SKILL_DOCUMENTATION ]
# PocketBase API 规则与过滤表达式
## 规则类型
每个集合有 5 种规则类型。每条规则都是一个**过滤表达式**,必须评估为 `true` 请求才能继续。
| 规则 | 控制 | 锁定 = | 空字符串 = |
|------|----------|----------|----------------|
| **List** | `GET /api/collections/{name}/records` | 仅超级用户 | 所有人可列出 |
| **View** | `GET /api/collections/{name}/records/{id}` | 仅超级用户 | 所有人可查看 |
| **Create** | `POST /api/collections/{name}/records` | 仅超级用户 | 所有人可创建 |
| **Update** | `PATCH /api/collections/{name}/records/{id}` | 仅超级用户 | 所有人可更新 |
| **Delete** | `DELETE /api/collections/{name}/records/{id}` | 仅超级用户 | 所有人可删除 |
**关键点**:`null`/锁定意味着只有超级用户可以执行该操作(普通用户和访客被拒绝)。空字符串 `""` 意味着包括访客在内的所有人。超级用户始终完全绕过 API 规则 — 见下文。
## 超级用户绕过
超级用户(以前称为管理员)**始终绕过 API 规则**。规则仅适用于普通认证记录和访客。
## 过滤语法
### 运算符
| 运算符 | 含义 | 示例 |
|----------|---------|---------|
| `=` | 等于 | `status = "active"` |
| `!=` | 不等于 | `status != "draft"` |
| `>` | 大于 | `count > 5` |
| `>=` | 大于或等于 | `count >= 5` |
| `<` | 小于 | `count < 10` |
| `<=` | 小于或等于 | `count ` | 任意大于 | `scores ?> 90` |
| `?>=` | 任意大于或等于 | `scores ?>= 90` |
| `?<` | 任意小于 | `scores ?< 10` |
| `?<=` | 任意小于或等于 | `scores ?<= 10` |
| `?~` | 任意 LIKE | `emails ?~ "@gmail.com"` |
| `?!~` | 任意 NOT LIKE | `emails ?!~ "@test.com"` |
**关键点**:对于多值字段(多选、多关系、多文件),请使用 `?=`(而不是 `=`)。`=` 检查原始 JSON 字符串,`?=` 检查单个值。
### 逻辑运算符
status = "active" && author = @request.auth.id
status = "active" || status = "featured"
用于分组的括号:`(a = 1 || b = 2) && c = 3`
### 值
- 字符串:`"value"` 或 `'value'`
- 数字:`123`, `45.67`
- 布尔值:`true`, `false`
- `null` — 空值/缺失值
- 标识符:字段名、宏
## 请求宏 (`@request.*`)
访问