使用 Supabase 与 SvelteKit
了解如何创建一个 Supabase 项目,向你的数据库添加一些示例数据,并从 SvelteKit 应用程序查询数据。
1# First, get your access token from https://supabase.org.cn/dashboard/account/tokens2export SUPABASE_ACCESS_TOKEN="your-access-token"34# List your organizations to get the organization ID5curl -H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN" \6 https://api.supabase.com/v1/organizations78# Create a new project (replace <org-id> with your organization ID)9curl -X POST https://api.supabase.com/v1/projects \10 -H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN" \11 -H "Content-Type: application/json" \12 -d '{13 "organization_id": "<org-id>",14 "name": "My Project",15 "region": "us-east-1",16 "db_pass": "<your-secure-password>"17 }'1-- Create the table2create table instruments (3 id bigint primary key generated always as identity,4 name text not null5);6-- Insert some sample data into the table7insert into instruments (name)8values9 ('violin'),10 ('viola'),11 ('cello');1213alter table instruments enable row level security;通过添加 RLS 策略使表格中的数据可公开读取
1create policy "public can read instruments"2on public.instruments3for select to anon4using (true);创建一个 SvelteKit 应用程序
使用 npm create 命令创建一个 SvelteKit 应用程序。
终端
1npx sv create my-app安装 Supabase 客户端库
开始的最快方法是使用 supabase-js 客户端库,它提供了一个方便的接口,用于从 SvelteKit 应用程序中使用 Supabase。
导航到 SvelteKit 应用程序并安装 supabase-js。
终端
1cd my-app && npm install @supabase/supabase-js声明 Supabase 环境变量
在项目的根目录下创建一个 .env 文件,并填充你的 Supabase 连接变量
项目 URL
可发布密钥
匿名密钥
1PUBLIC_SUPABASE_URL=<SUBSTITUTE_SUPABASE_URL>2PUBLIC_SUPABASE_PUBLISHABLE_KEY=<SUBSTITUTE_SUPABASE_PUBLISHABLE_KEY>你还可以从 项目的 连接 对话框 获取项目 URL 和密钥。
API 密钥的更改
Supabase 正在更改密钥的工作方式,以提高项目安全性和开发人员体验。您可以 阅读完整的公告,但在过渡期间,您可以使用当前的 anon 和 service_role 密钥以及新的可发布密钥,格式为 sb_publishable_xxx,它将取代旧的密钥。
在大多数情况下,你可以从 项目的 连接 对话框 获取正确的密钥,但如果你想要特定的密钥,你可以在 项目的设置页面中的 API 密钥部分 找到所有密钥
- 对于旧版密钥,从 旧版 API 密钥 选项卡中复制
anon密钥用于客户端操作,并复制service_role密钥用于服务器端操作。 - 对于新密钥,打开 API 密钥 选项卡,如果您还没有可发布密钥,请单击 创建新的 API 密钥,并复制 可发布密钥 部分中的值。
阅读 API 密钥文档 以全面了解所有密钥类型及其用途。
创建 Supabase 客户端
在你的 SvelteKit 应用程序中创建一个 src/lib 目录,创建一个名为 supabaseClient.js 的文件,并添加以下代码来初始化 Supabase 客户端
1import { createClient } from '@supabase/supabase-js';2import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_PUBLISHABLE_KEY } from '$env/static/public';34export const supabase = createClient(PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_PUBLISHABLE_KEY)从应用查询数据
使用 load 方法在服务器端获取数据,并将查询结果显示为简单的列表。
在 src/routes 目录中创建 +page.server.js 文件,并添加以下代码。
1import { supabase } from "$lib/supabaseClient";23 export async function load() {4 const { data } = await supabase.from("instruments").select();5 return {6 instruments: data ?? [],7 };8 }将 src/routes 目录中 +page.svelte 文件中的现有内容替换为以下代码。
src/routes/+page.svelte
1<script>2 let { data } = $props();3</script>45<ul>6 {#each data.instruments as instrument}7 <li>{instrument.name}</li>8 {/each}9</ul>