Veritabanınızı JavaScript SDK'sıyla sorgulayın
aura.db günlük akışları, güvenli olmayan çağrıları reddeden kurallar ve bir tablonun satır düzeyinde güvenlikle nasıl korunacağı.
1. Satırları okuyun
aura.from('todos'), aura.db.from('todos') için bir kısayoldur. Her çağrı { data, error } değerini döndürür ve hiçbir zaman fırlatmaz; bkz. istemci seçenekleri ve hataları.
Filtre zinciri: eq, neq, gt, gte, lt, lte, like, ilike, in, is ve listede listelenen diğerleri veritabanı referansı. Satırlardan oluşan bir sayfa için range(from, to) kullanın.
2. Ekle, güncelle ve sil
İki kural sizi hatalardan korur:
- Bir toplu eklemenin her satırda aynı anahtarlara ihtiyacı vardır. Farklı anahtarlara sahip satırlar,
All object keys must matchile400değerini döndürür. Eksik anahtarlarınullile doldurun. - Filtresiz
update()vedelete(), herhangi bir istek gönderilmeden önce istemcisi tarafındanunfiltered_mutationhata koduyla reddedilir. Her satırı bilerek değiştirmek için SQL'i bir sunucudan çalıştırın.
3. Bir satır, birçok satır önemlidir
count: 'exact' eşleşen her satırı sayar. 'planned' ve 'estimated' çok büyük tablolarda daha hızlıdır ve yaklaşıktır.
4. Bir masayı koruyun
Satır düzeyinde güvenlik, yeni bir tabloda kapalı. Açık anahtar sayesinde herkes okuyabilir ve yazabilir. Etkinleştirin ve ardından ihtiyacınız olan politikaları ekleyin:
Veritabanı rolleri aura_anon, aura_authenticated ve aura_service_role şeklindedir. auth.uid(), ortak anahtar için NULL ve oturum açmış bir kullanıcının kullanıcı kimliğidir. Satır Düzeyinde Güvenlik konusuna bakın.
Bir service_role anahtarı, tasarım gereği RLS anahtarını atlar: onu sunucunuzda tutun.
5. SQL fonksiyonları ve rpc
Bir sunucudan bir işlev oluşturun, ardından onu herhangi bir yerden rpc() ile çağırın:
grant_execute_toonu çağırmak için gereklidir. Bu olmadan hiç kimse işlevi yürütemez. Listelenmeyen bir rol403 permission denied for functionalır. Hemauthenticatedhem deaura_authenticatedkabul edilir.- Yeni bir işlev birkaç saniye sonra çağrılabilir. API şemasını yeniden yükleyene kadar
rpc(),404 Could not find the functiondeğerini döndürür. - Ham SQL (
CREATE FUNCTION) ile işlev oluşturma reddedildi:createFunctionkullanın.
6. SQL'i bir sunucudan çalıştırın
db.sql() bir service_role anahtarına ihtiyaç duyar. DELETE olmadan WHERE öğesini reddeder ve pg_class veya pg_roles gibi sistem kataloglarını okumaz. Tablolarınızı listelemek için admin.db.schema() kullanın.