浏览全部文档 · 13/37

功能简介

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>'

权限模型

Session/JWT 请求按用户角色和 Permission 过滤;API Key 按 rows Scope 执行服务端操作。启用 Row Security 后,Row Permission 与 Table Permission 共同决定结果。

常见错误

现象处理建议
database_row_not_foundRow 不存在或当前身份不可见;不要用错误差异探测其他用户数据。
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.php
  • backend-candidate:src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Rows/XList.php
  • backend-candidate:tests/e2e/Services/Databases/DatabasesBase.php

Appwrite taxonomy 仅作信息架构参考:https://appwrite.io/docs/products/databases。上游页面不是 AppBase 实现证据。

继续阅读