更新记录
1.0.0(2026-03-30)
支持insert/update/delete/select/upsert/listen/unlisten
平台兼容性
supabase-database
Supabase PostgREST(增删查改 / upsert) 与 Realtime(postgres_changes 监听) 的 UTS 插件,支持 Android(Kotlin + OkHttp) 与 iOS(Swift + URLSession),不引入 supabase-kt / SPM,便于云打包集成。
控制台准备
- 在 Supabase 控制台为表开启 Replication → Realtime,否则
listen收不到变更。 - 使用 anon key(或带 RLS 策略下可用的 key);
update/delete的match必须非空,避免误删全表。 - 服务端 RLS 与 Web/JS 一致:匿名访问需配置相应 policy。
使用
// #ifdef APP-PLUS
import { SupabasePluginImpl } from '@/uni_modules/supabase-database'
// #endif
// onLaunch
// #ifdef APP-PLUS
this.globalData.supabase = new SupabasePluginImpl({
supabaseUrl: 'https://xxx.supabase.co',
supabaseAnonKey: '你的 anon key'
})
// #endif
const sb = getApp().globalData.supabase
if (!sb) return
sb.insert('messages', { text: 'hi' }, (res) => { /* res.success, res.data, res.errMsg */ })
sb.update('messages', { id: 'uuid' }, { text: 'bye' }, (res) => { })
sb.delete('messages', { id: 'uuid' }, (res) => { })
sb.select('messages', {
match: { user_id: 'x' },
columns: '*',
limit: 20,
order: 'created_at',
ascending: false,
single: false
}, (res) => { })
sb.upsert('profiles', { id: 'u1', name: 'a' }, 'id', (res) => { })
const lid = sb.listen('messages', (res) => {
if (res.success && res.data) console.log('变更', res.data)
}, { schema: 'public', event: '*', filter: 'id=eq.xxx' })
sb.unlisten(lid)
API 摘要
| 方法 | 说明 |
|---|---|
insert(table, data, cb) |
POST,Prefer return=representation |
update(table, match, data, cb) |
PATCH,match 为等值 AND(k=eq.v) |
delete(table, match, cb) |
DELETE,同上 |
select(table, options, cb) |
GET;single: true 时按单行 Object 解析 |
upsert(table, data, onConflict, cb) |
POST + on_conflict + merge |
listen(table, cb, options?) |
Realtime WebSocket,返回 listenerId |
unlisten(listenerId) |
关闭对应连接 |
listen 成功时 res.data 为服务端推送的 payload(常见字段含 eventType、schema、table、new/old 等,以项目 Realtime 版本为准)。
依赖
- Android:
utssdk/app-android/config.json已声明okhttp3:okhttp:4.12.0。 - iOS:仅系统框架,无额外 CocoaPods。
说明
select多行时res.data在运行时为 JSON 数组;若 TypeScript 标注为UTSJSONObject,可按实际结构断言或从JSON.parse结果读取。- 与 databaseUpdate 的「集合 + 文档 ID」不同,此处为 表名 + 行级 match,语义对齐 PostgREST。

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 5373
赞赏 10
下载 11697770
赞赏 1898
赞赏
京公网安备:11010802035340号