跳转到主要内容

安装

Find the anon key with npx @insforge/cli secrets get ANON_KEY, or in the dashboard: click Install and open API Keys.

insert()

将新记录插入表中。

参数

  • values (object | Array, required) - 要插入的数据。单个对象或数组用于批量插入
  • options.count (‘exact’ | ‘planned’ | ‘estimated’, optional) - 包含插入行数

返回

.insert() 后链接 .select() 以返回插入的数据

示例

输出示例


update()

更新表中的现有记录。必须使用筛选器来定位特定行。

参数

  • values (object, required) - 要更新的字段
  • options.count (‘exact’ | ‘planned’ | ‘estimated’, optional) - 包含更新行数

返回

始终使用筛选器(如 .eq().in())来指定要更新的行

示例

输出示例


delete()

从表中删除记录。必须使用筛选器来定位特定行。

参数

  • options.count (‘exact’ | ‘planned’ | ‘estimated’, optional) - 包含删除行数

返回

始终使用筛选器来指定要删除的行

示例

输出示例


select()

从表或视图查询记录。

参数

  • columns (string, optional) - 逗号分隔的列名。使用 * 表示所有列
  • options.count (‘exact’ | ‘planned’ | ‘estimated’, optional) - 包含总行数
  • options.head (boolean, optional) - 仅返回计数,不返回数据

返回

示例

输出示例


rpc()

调用 PostgreSQL 存储函数(RPC - 远程过程调用)。

参数

  • functionName (string, required) - 要调用的 PostgreSQL 函数的名称
  • args (object, optional) - 传递给函数的参数

返回

示例


筛选器

链接筛选器以缩小查询结果范围。所有筛选器采用 (column, value) 作为参数。
筛选器描述示例
.eq(column, value)等于.eq('status', 'active')
.neq(column, value)不等于.neq('status', 'banned')
.gt(column, value)大于.gt('age', 18)
.gte(column, value)大于或等于.gte('price', 100)
.lt(column, value)小于.lt('stock', 10)
.lte(column, value)小于或等于.lte('priority', 3)
.like(column, pattern)区分大小写的模式(使用 % 通配符).like('name', '%Widget%')
.ilike(column, pattern)不区分大小写的模式(使用 % 通配符).ilike('email', '%@gmail.com')
.in(column, array)值在数组中.in('status', ['pending', 'active'])
.is(column, value)完全等于(用于 null 检查).is('deleted_at', null)

修饰符

控制查询结果的返回方式。
修饰符描述示例
.order(column, options)排序结果。选项:{ ascending: true/false, nullsFirst: true/false }.order('created_at', { ascending: false })
.limit(count)限制行数.limit(10)
.range(from, to)获取索引之间的行(分页).range(0, 9)
.single()返回对象而不是数组(如果有多个则抛出).single()
.maybeSingle()返回对象或 null(无错误).maybeSingle()

常见模式

带计数的分页

输出:

筛选搜索

输出:

与身份验证钩子结合使用

结合数据库查询与 useUser()useAuth() 钩子来获取用户特定的数据:
关键要点:
  • 使用 user.id 为已认证用户筛选数据
  • 在访问 user 之前检查 isLoaded 以避免竞争条件
  • 检查 !user 以处理未认证状态