升级到supabase-js v2

supabase-js v2专注于为开发者提供 "生活质量 "方面的改进,并解决了v1中的一些最大痛点。v2包括类型支持、带异步方法的重建Auth库、改进的错误等。

supabase-js v1不会增加新的功能,但我们会继续将安全修复合并到v1,并在未来3个月内进行维护补丁。

升级客户端库

1npm install @supabase/supabase-js@2

如果你使用 "createClient "的自定义配置,可选择如下。

src/supabaseClient.ts
1const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY, {
2  schema: 'custom',
3  persistSession: false,
4})

阅读更多关于构造器选项

认证方法

signIn()方法已被弃用,转而采用更明确的方法签名,以帮助类型提示。以前,开发者很难知道他们错过了什么(例如,很多开发者没有意识到他们可以使用无密码的魔法链接)。

用电子邮件和密码登录

1const { user, error } = await supabase.auth.signIn({ email, password })

用 magic link登录

1const { error } = await supabase.auth.signIn({ email })

用第三方供应商登录

1const { error } = await supabase.auth.signIn({ provider })

用手机登录

1const { error } = await supabase.auth.signIn({ phone, password })

使用OTP用手机登录

1const { error } = await supabase.auth.api.sendMobileOTP(phone)

重置电子邮件的密码

1const { data, error } = await supabase.auth.api.resetPasswordForEmail(email)

获取用户的当前会话

1const session = supabase.auth.session()

获取登录的用户

1const user = supabase.auth.user()

更新已登录用户的用户数据

1const { user, error } = await supabase.auth.update({ attributes })

在Supabase中使用一个自定义的access_tokenJWT

1const { user, error } = supabase.auth.setAuth(access_token)

Cookie方法

setAuthCookiegetUserByCookie等与cookie相关的方法已经被删除。

对于Next.js,你可以使用Auth Helpers来帮助你管理cookie。 如果你不能使用Auth Helpers,你可以使用server-side rendering

一些PR提供了额外的背景信息。

数据方法

.insert() / .upsert() / .update() / .delete() 默认情况下不返回行: PR.

以前,这些方法默认返回插入/更新/删除的行(这引起了一些混乱),你可以通过指定 "returning: 'minimal'"选择不返回它。现在的默认行为是不返回记录。要返回插入的/更新的/删除的行,请在最后添加一个.select()的调用。

插入和返回数据

1const { data, error } = await supabase.auth.insert({ new_data })

更新和返回数据

1const { data, error } = await supabase.auth.update({ new_data }).eq('id', id)

Realtime 方法#

订阅

1const userListener = supabase
2  .from('users')
3  .on('*', (payload) => handleAllEventsPayload(payload.new))
4  .subscribe()

取消订阅

1userListener.unsubscribe()