功能简介
Row 是 Table 中受权限保护的数据记录。读取列表时使用 SDK Query 表达过滤、排序、分页与选择字段;Index 决定常用查询能否稳定执行。写入必须满足 Column 结构,读取结果还受 Table/Row Permission 过滤。
当前支持范围
- 数据行(SUPPORTED):支持带资源权限的 Row 增删改查、批量操作、结构化查询与事务内写入。
适用场景
- 实现用户资料、内容、配置或业务记录的 CRUD。
- 按字段过滤、排序和分页列表。
- 通过 Row Permission 隔离不同用户或团队的数据。
前置条件
- Table、Columns 和必要 Index 已创建并处于可用状态。
- 客户端用户已登录,或服务端 Key 具备 rows Scope。
- 已为 create/read/update/delete 设计最小 Permission。
Console 操作路径
Console → Project → Databases → Database → Table → Rows 查看和编辑数据;Columns 与 Indexes 分别管理结构和查询支撑。Console 操作同样受当前控制面权限约束。
SDK 示例
SDK · TypeScript
import { Client } from 'appbase-web-sdk';
const client = new Client()
.setEndpoint('https://<APPBASE_HOST>/v1')
.setProject('<PROJECT_ID>');
import { TablesDB, Query, ID, Permission, Role } from 'appbase-web-sdk';
const tables = new TablesDB(client);
await tables.createRow({
databaseId: '<DATABASE_ID>',
tableId: '<TABLE_ID>',
rowId: ID.unique(),
data: { status: 'draft', title: 'Example' },
permissions: [
Permission.read(Role.user('<USER_ID>')),
Permission.update(Role.user('<USER_ID>'))
]
});
const rows = await tables.listRows({
databaseId: '<DATABASE_ID>',
tableId: '<TABLE_ID>',
queries: [Query.equal('status', ['draft']), Query.limit(25)]
});REST 示例
REST · Bash
curl 'https://<APPBASE_HOST>/v1/tablesdb/<DATABASE_ID>/tables/<TABLE_ID>/rows?queries[]=equal(%22status%22,%5B%22draft%22%5D)' \
-H 'X-Appwrite-Project: <PROJECT_ID>' \
-H 'X-Appwrite-JWT: <USER_JWT>'常见错误
| 现象 | 处理建议 |
|---|---|
database_row_not_found | Row 不存在或当前身份不可见;不要用错误差异探测其他用户数据。 |
general_query_invalid | 检查 Query 操作、字段类型、Index 和参数数量。 |
| Column 校验失败 | 写入的数据必须满足 required、类型、长度与枚举约束。 |
403 | 检查 Table/Row Permission,而不仅是 API Key Scope。 |
当前限制
- Query 数量、字符串长度、分页大小和响应大小都有实例限制。
- 没有合适 Index 的查询可能被拒绝或性能不稳定。
- 批量写入与事务写入有独立接口和状态语义。
Appwrite 兼容说明
Row、Query、Index 与 Permission 保持兼容用法;本文采用 TablesDB 路径和 AppBase Web SDK 包名。
AppBase 增强说明
AppBase Row 数据可参与权限化 Aggregation、事务视图和写入前 Moderation。
发布状态和验证 Commit
origin/main 已核验。验证 Commit:0363062a1c7ea08741975bb5ba0c3361663c9353。
权威来源文件列表
backend-candidate:src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/Create.phpbackend-candidate:src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/XList.phpbackend-candidate:tests/e2e/Services/Databases/DatabasesBase.php
Appwrite taxonomy 仅作信息架构参考:https://appwrite.io/docs/products/databases。上游页面不是 AppBase 实现证据。