升级到supabase-js v2
supabase-js v2专注于为开发者提供 "生活质量 "方面的改进,并解决了v1中的一些最大痛点。v2包括类型支持、带异步方法的重建Auth库、改进的错误等。
supabase-js v1不会增加新的功能,但我们会继续将安全修复合并到v1,并在未来3个月内进行维护补丁。
升级客户端库
1npm install @supabase/supabase-js@2
如果你使用 "createClient "的自定义配置,可选择如下。
src/supabaseClient.ts1const 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_token
JWT
1const { user, error } = supabase.auth.setAuth(access_token)
Cookie方法
setAuthCookie
和getUserByCookie
等与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()