key alanı ve value alanı olan küçük bir teknik nesne, çalışma alanıyla sınırlı, kalıcı bir anahtar-değer deposu sağlar ve kayıtlar için zaten kullandığınız aynı typed API client üzerinden sorgulanabilir.
Depo nesnesini tanımlayın
İki alanı olan özel bir nesne tanımlayın —key (benzersiz bir TEXT) ve value (her türlü JSON-serileştirilebilir yükü saklayabilmeniz için bir RAW_JSON). Tam defineObject referansı için Objects bölümüne bakın.
src/objects/kv-store.object.ts
Anahtar benzersizliğini zorunlu kılın
Aynı anahtarın asla iki satıra sahip olmaması içinkey üzerinde benzersiz bir indeks ekleyin. Bu, benzersizlik için önerilen ilkeldir — bkz. Data → Unique indexes.
src/indexes/kv-store-key.index.ts
Bir mantık işlevinden okuma ve yazma
Nesneyi, geri kalan kodunuzunget, set ve del ile bir anahtar-değer API’si gibi okunmasını sağlamak için birkaç küçük yardımcı işlevin arkasına alın. Bunlar, çalışma alanı şemanızdan üretilen ve tamamen kvStore nesnesine göre türlendirilmiş CoreApiClient kullanır.
src/logic-functions/handlers/kv-store.ts
Benzersiz indeks çoğaltmalara karşı koruma sağlar, ancak aynı anda aynı yeni anahtarı yazan iki çalıştırma, yine de arama ve oluşturma arasında yarışabilir. Benzersizlik kısıtlamasında başarısız olan bir oluşturma işlemini “başka biri kazandı” olarak ele alın — hatayı yakalayın ve yeniden okuyun ya da bir güncelleme olarak tekrar deneyin.
Kullanın: maliyetli bir çağrıyı önbelleğe alın
Yaygın bir kullanım, yavaş veya hız sınırına tabi üçüncü taraf yanıtını önbelleğe almak, böylece tekrar eden çalıştırmalar her seferinde maliyet ödemek yerine bunu yeniden kullanır.src/logic-functions/getExchangeRate.logic-function.ts
Kalıplar ve ipuçları
- Ad alanları. Farklı konuları birbirinden ayırmak ve toplu aramaları kolaylaştırmak için anahtarlara ön ek ekleyin —
sync-cursor:linear,cache:exchange-rate:USD:EUR,lock:nightly-report. Bir ad alanının tamamını listelemek veya temizlemek içinkey: { like: 'cache:%' }ile filtreleyin. - Sona erme (TTL). Depoda yerleşik bir sona erme özelliği yoktur. Okuma sırasında kontrol etmek için
valueiçinde bir zaman damgası saklayın (önbellek örneğinde olduğu gibi) veya birDATE_TIMEalanı ekleyip, düzenli aralıklarla cron-triggered function içinden eski satırları temizleyin. - Ne saklanmalı.
RAW_JSON, sayılar, dizeler, diziler ve nesneler gibi JSON-serileştirilebilir herhangi bir değeri tutar. Kayıtları küçük tutun; bu, koordinasyon ve önbelleğe alma içindir, büyük blob’lar veya dosyalar için değil. Dosyalar için birFILESalanı veuploadFilekullanın. - Görünürlük ve izinler. Satırlar, diğer kayıtlar gibi çalışma alanı veritabanında yaşar; bu nedenle API üzerinden sorgulanabilirler ve uygulamanızın role yapılandırmasına uyarlar. Depoyu ana arayüzün dışında tutmak için, onu navigation menu dışında bırakın.
- Bir kayda kapsamlamak. Genel anahtarlar yerine kayıt başına duruma mı ihtiyacınız var? Kimliği anahtarın içine kodlamak yerine, depo nesnesinden hedef nesneye bir relation ekleyin.
Bu bir kuraldır, ayrı bir özellik değildir — “KV Store”, sizin tanımladığınız ve standart API ile sorguladığınız normal bir özel nesnedir. Bu da, uygulamanızın verilerinin geri kalanıyla aynı eşitleme, izinler ve araç setinden yararlanması anlamına gelir.