โจ ๊ธฐ๋ณธ ์ค์ ๋ฐ ์ด๊ธฐํ
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(
process.env.REACT_APP_SUPABASE_URL,
process.env.REACT_APP_SUPABASE_ANON_KEY
)
๐ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ํต์ฌ ์์
1. Select (์กฐํ)
const { data, error } = await supabase
.from('table_name')
.select('*')
.select('column1, column2')
.select(`
id,
title,
comments (
id,
content
)
`)
2. Filter (ํํฐ๋ง)
.eq('column', value)
.in('column', ['value1', 'value2'])
.ilike('column', '%value%')
.eq('column1', value1)
.eq('column2', value2)
.or('column1.eq.value1,column2.eq.value2')
3. ์ค์๊ฐ ๊ตฌ๋
(๊ณต์๋ฌธ์ ๊ฐ์กฐ)
const subscription = supabase
.channel('custom-channel-name')
.on('postgres_changes',
{ event: '*', schema: 'public', table: 'table_name' },
(payload) => {
console.log('Change received!', payload)
}
)
.subscribe()
subscription.unsubscribe()
๐ ์ธ์ฆ (๊ณต์๋ฌธ์ ํ์ ์ฌํญ)
1. ๊ธฐ๋ณธ ์ธ์ฆ
const { data, error } = await supabase.auth.signUp({
email: 'user@email.com',
password: 'password'
})
const { data, error } = await supabase.auth.signInWithPassword({
email: 'user@email.com',
password: 'password'
})
const { data: { user } } = await supabase.auth.getUser()
2. ์ธ์
๊ด๋ฆฌ (์ค์)
supabase.auth.onAuthStateChange((event, session) => {
if (event === 'SIGNED_IN') console.log('SIGNED_IN', session)
})
โก RLS (Row Level Security) - ํ์!
CREATE POLICY "Users can only access their own data"
ON table_name
FOR SELECT
USING (auth.uid() = user_id);
๐ฏ ์๋ฌ ์ฒ๋ฆฌ (๊ณต์๋ฌธ์ ๊ฐ์กฐ์ฌํญ)
const { data, error } = await supabase
.from('table')
.select()
if (error) {
console.error('Error:', error.message)
return
}
console.log('Data:', data)
๐ซ ์ฑ๋ฅ ์ต์ ํ ํ (๊ณต์๋ฌธ์ ๊ถ์ฅ์ฌํญ)
1. ํ์ํ ์ปฌ๋ผ๋ง ์กฐํ
.select('id, title, created_at')
.select('*')
2. ํ์ด์ง๋ค์ด์
ํ์ฉ
const { data, error } = await supabase
.from('table')
.select('*')
.range(0, 9)
๐ค ์์ฃผ ํ๋ ์ค์๋ค
- RLS ์ ์ฑ
๋ฏธ์ค์
- ๊ตฌ๋
ํด์ ๋๋ฝ
- ์๋ฌ ์ฒ๋ฆฌ ๋ถ์ฌ
- ํ๊ฒฝ๋ณ์ ๊ด๋ฆฌ ์ํ