Ardışık düzen işlemleri için güvenlik kuralları

Pipeline sorgu kuralları desteğinin temel amacı, mevcut kurallar motorunun filtreleme özellikleriyle eşleşmektir. Pipeline sorguları zengin bir özellik seti sunarken sorgu memnuniyetini ve güvenliğini sağlamak için kurallar motoru yalnızca basit filtreleri tanıyabilir.

Desteklenen Filtre İfadeleri

Bir sorgunun kurallarınızla kısıtlanması için sabitlere karşı standart karşılaştırma operatörleri kullanması gerekir. Aşağıdaki filtre türleri, kurallar motoru tarafından tanınır:

  • Eşitlik ve Eşitsizlik: eq, neq.
  • Karşılaştırmalar: gt, gte, lt, lte.
  • Üyelik: in, arrayContains.

Aşağıda bazı örnekler verilmiştir:

  • where(eq("foo", 2))
  • where(lt("foo", 2))
  • documents("/user/1", "/user/2").where(...)

İstek Özellikleri

Standart sorgularda kullanılabilen bazı özellikler kanallarda desteklenmese de kimlik doğrulama ve sorgu bağlamını doğrulamak için request nesnesini kullanmaya devam edebilirsiniz.

Desteklenen tesisler

Yeni motor aşağıdaki özellikleri desteklemeye devam eder:

  • request.auth: Kullanıcı UID'sine ve jeton verilerine erişin.
  • request.method: İşlemi tanımlar (örneğin, get, list).
  • request.path: Erişilen kaynağın yolu.
  • request.time: İsteğin sunucu tarafı zaman damgası.

Desteklenmeyen özellikler

Çok aşamalı sorgularda bu değerlerin belirlenmesinin karmaşıklığı nedeniyle limit, offset ve orderBy gibi request.query özellikleri, ardışık düzen kuralı kontrollerinde desteklenmez.

Ardışık düzen aşaması işleme ve izinleri

Güvenlik kurallarında belirli ayrıntılı işlemlere karşılık gelen farklı işlem hattı aşamaları vardır:

  • allow list izinleri: collection(), collectionGroup() ve database() aşamaları tarafından tetiklenir.
  • allow get izinleri: get toplu işlemine benzer şekilde ele alınan documents() aşaması tarafından tetiklenir.
  • Alan değişikliği aşamaları: Kurallar yalnızca depolanan veriler üzerinde çalışır, türetilmiş değerler üzerinde çalışmaz. Bir işlem hattı, alanları değiştiren aşamalar içeriyorsa (örneğin, AddFields, ReplaceWith, Select), kurallar motoru bu aşama karşılaşıldıktan sonra filtre kısıtlamalarını uygulamayı durdurur.
  • Değişmez değerler aşaması: literals() aşaması, veritabanından okuma yapmaz ancak maliyetlere neden olabilir. Kötüye kullanımı önlemek için, kurallar tarafından doğrulanabilen başka bir aşamayla (ör. collection()) eşleştirilmesi gerekir.