RDS Supabase基于阿里云RDS PostgreSQL构建,提供了标准的PostgreSQL能力。在此基础上,自动生成的Data API,包括CRUD API和RESTful API等,使您能够立即对数据进行增、删、改、查等操作。
基本操作
获取数据
使用 select() 从数据表或视图中查询数据。
const { data, error } = await supabase
.from('characters')
.select()
插入数据
使用 insert() 向数据表中添加新行。
const { error } = await supabase
.from('countries')
.insert({ id: 1, name: 'Mordor' })
更新数据
使用 update() 修改数据表中的现有行。
const { error } = await supabase
.from('instruments')
.update({ name: 'piano' })
.eq('id', 1)
更新插入数据
upsert() 方法可以智能地更新或插入数据。通过onConflict参数指定一个或多个列以进行冲突检查。如果表中已存在与该列值匹配的行,则将对该行进行更新;如果不存在匹配的行,则将插入一条新行。
const { data, error } = await supabase
.from('instruments')
.upsert({ id: 1, name: 'piano' })
.select()
const { data, error } = await supabase
.from('users')
.upsert({ id: 42, handle: 'saoirse', display_name: 'Saoirse' }, { onConflict: 'handle' })
.select()
删除数据
使用 delete() 从数据表中移除指定的行。
const response = await supabase
.from('countries')
.delete()
.eq('id', 1)
配置PostgREST自定义参数
使用postgres用户在Supabase控制台(Supabase Dashboard)的SQL Editor中执行以下SQL,即可完成PostgREST自定义参数配置,实现自定义Data API对外暴露的Schema范围、单次请求返回的最大行数限制。
-- 检查权限是否授权
SELECT
has_parameter_privilege('postgres', 'pgrst.db_schemas', 'SET') AS can_set_schemas,
has_parameter_privilege('postgres', 'pgrst.db_max_rows', 'SET') AS can_set_max_rows;
-- PostgREST对外暴露的数据库Schema列表(API路由可见范围)
ALTER ROLE authenticator SET pgrst.db_schemas = 'public,storage,graphql_public,finance';
-- PostgREST单次请求从数据库获取的最大行数限制(硬限制)
ALTER ROLE authenticator SET pgrst.db_max_rows = '2';
-- 通知PostgREST重载配置(必须执行,否则配置不生效)
NOTIFY pgrst, 'reload config';
NOTIFY pgrst, 'reload schema';
-- 查看配置结果
SELECT rolname, rolconfig
FROM pg_roles
WHERE rolname = 'authenticator';
相关文档
-
了解Supabase数据库的更多功能特性,请参见Database。
-
Supabase JavaScript SDK请参见JavaScript。
-
了解Supabase用于管理数据库的REST API,请参见Postgres REST API
该文章对您有帮助吗?