جاري التحميل...
جاري التحميل...
تطبيق CRUD مع RLS وStorage وRealtime
تهانينا على إكمال مرحلة Supabase! لقد تعلمت جميع المهارات الأساسية لاستخدام Supabase كخادم لتطبيقات Next.js الخاصة بك.
في هذا المشروع، سنبني نظاماً كاملاً لإدارة الطلاب باستخدام جميع المفاهيم التي تعلمناها.
بعد هذه المرحلة، يمكنك الانتقال إلى Clerk للمصادقة المتقدمة، أو البدء في بناء مشاريع حقيقية مع Supabase + Next.js.
ما هي أفضل ممارسة لتخزين مفاتيح Supabase؟
ما هو الغرض من RLS في Supabase؟
ما هي ميزة استخدام Supabase؟
أنشئ نظاماً كاملاً مع جداول الطلاب/المعلمين والمصادقة وعمليات CRUD ورفع الملفات وسياسات الأمان.
الحل:
// Add task categories
CREATE TABLE categories (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
name TEXT NOT NULL,
color TEXT DEFAULT '#3B82F6',
user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE,
created_at TIMESTAMPTZ DEFAULT NOW()
);
ALTER TABLE categories ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Users manage own categories" ON categories
FOR ALL USING (auth.uid() = user_id);
// Add priority column
ALTER TABLE tasks ADD COLUMN priority TEXT
DEFAULT 'medium'
CHECK (priority IN ('low', 'medium', 'high', 'urgent'));نقاط رئيسية:
مثال:
// CRUD
await supabase.from('tasks').insert({ title: 'New' })
const { data } = await supabase.from('tasks').select('*')
await supabase.from('tasks').update({ status: 'done' }).eq('id', id)
await supabase.from('tasks').delete().eq('id', id)
// Auth
await supabase.auth.signInWithPassword({ email, password })
await supabase.auth.signOut()
// Storage
await supabase.storage.from('bucket').upload('path', file)الإجابة:
استخدم Edge Functions
للعمليات المعقدة التي تحتاج server-side logic