Supabase Go 客户端库教程
项目介绍
supabase-go
是一个非官方的 Supabase 客户端库,专门为 Go 语言设计。它整合了所有与官方 Supabase 客户端类似的库,提供了与 Supabase 服务的全面集成,包括数据库访问、用户认证、文件存储等功能。
项目快速启动
安装
首先,你需要安装 supabase-go
库:
go get github.com/nedpals/supabase-go
初始化客户端
接下来,你需要初始化 Supabase 客户端。首先,从 Supabase 管理面板获取你的 Supabase URL 和 Supabase 公钥。
package main
import (
supa "github.com/nedpals/supabase-go"
)
func main() {
options := &supa.ClientOptions{
AutoRefreshToken: true,
Debug: false,
}
client, err := supa.NewClient("<SUPABASE-URL>", "<SUPABASE-PUBLIC-KEY>", options)
if err != nil {
panic(err)
}
// 现在你可以使用 client 进行各种操作
}
应用案例和最佳实践
数据库操作
使用 supabase-go
进行数据库操作非常简单。以下是一个插入数据的示例:
func insertData(client *supa.Client) {
data := map[string]interface{}{
"name": "John Doe",
"email": "john.doe@example.com",
}
var result map[string]interface{}
err := client.DB.From("users").Insert(data).Single().Execute(&result)
if err != nil {
panic(err)
}
fmt.Println("Inserted user:", result)
}
用户认证
supabase-go
也支持用户认证功能。以下是一个使用电子邮件和密码进行注册的示例:
func signUp(client *supa.Client) {
credentials := supa.UserCredentials{
Email: "john.doe@example.com",
Password: "securepassword",
}
user, err := client.Auth.SignUp(credentials)
if err != nil {
panic(err)
}
fmt.Println("Signed up user:", user)
}
典型生态项目
集成实时监听器
supabase-go
支持实时数据库更改的监听。以下是一个简单的实时监听器示例:
func listenForChanges(client *supa.Client) {
listener := client.Realtime.Channel("public:users")
listener.On(supa.RealtimeListenTypes.All, func(event supa.RealtimeEvent) {
fmt.Println("Received event:", event)
})
err := listener.Subscribe()
if err != nil {
panic(err)
}
}
文件存储
supabase-go
还支持文件存储功能。以下是一个上传文件的示例:
func uploadFile(client *supa.Client) {
file, err := os.Open("path/to/file")
if err != nil {
panic(err)
}
defer file.Close()
uploadOptions := supa.StorageUploadOptions{
CacheControl: "3600",
ContentType: "image/jpeg",
}
url, err := client.Storage.From("bucket-name").Upload(file, "file-name", uploadOptions)
if err != nil {
panic(err)
}
fmt.Println("Uploaded file URL:", url)
}
通过这些示例,你可以看到 supabase-go
在实际应用中的强大功能和灵活性。希望这些内容能帮助你快速上手并充分利用 supabase-go
客户端库。