Přejít na hlavní obsah
Logické funkce běží v izolovaných, krátce žijících procesech Node.js — jakmile běh skončí, nic, co bylo v paměti, nepřežije. Když potřebujete něco zapamatovat mezi běhy (kešovat nákladnou odpověď z API, uložit kurzor pro inkrementální synchronizace, odložit práci nebo předat stav z jedné funkce do druhé), uložte to do databáze pracovního prostoru. Na to nepotřebujete speciální úložiště: malý technický objekt s polem key a polem value vám poskytne trvalé key-value úložiště, omezené na pracovní prostor, které lze dotazovat přes stejný typovaný klient API, který už používáte pro záznamy.

Definujte objekt úložiště

Deklarujte vlastní objekt se dvěma poli — key (jedinečný TEXT) a value (RAW_JSON, takže můžete ukládat libovolná JSON-serializovatelná data). Úplnou referenci defineObject najdete v Objects.
src/objects/kv-store.object.ts

Vynucení jedinečnosti klíče

Přidejte na key jedinečný index, aby stejný klíč nikdy nemohl mít dva řádky. Toto je doporučené primitivum pro jedinečnost — viz Data → Unique indexes.
src/indexes/kv-store-key.index.ts

Čtení a zápis z logické funkce

Zabalte objekt do několika malých helperů, aby zbytek vašeho kódu vypadal jako key-value API — get, set a del. Používají CoreApiClient, který je generovaný ze schématu vašeho pracovního prostoru a je plně typovaný proti objektu kvStore.
src/logic-functions/handlers/kv-store.ts
Jedinečný index chrání před duplikáty, ale dva běhy, které ve stejný okamžik zapisují stejný nový klíč, se stále mohou předhánět mezi vyhledáním a vytvořením. Považujte vytvoření, které selže na omezení jedinečnosti, za „někdo jiný vyhrál“ — zachyťte ho a znovu přečtěte, nebo to zkuste znovu jako aktualizaci.

Použití: kešujte nákladné volání

Typickým použitím je kešování pomalé nebo omezované (rate-limited) odpovědi třetí strany, aby opakované běhy znovu použily výsledek místo placení nákladů při každém spuštění.
src/logic-functions/getExchangeRate.logic-function.ts

Vzorové postupy a tipy

  • Jmenné prostory. Přidávejte prefixy ke klíčům, abyste oddělili různé oblasti a usnadnili hromadná vyhledávání — sync-cursor:linear, cache:exchange-rate:USD:EUR, lock:nightly-report. Filtrováním key: { like: 'cache:%' } můžete vypsat nebo vyčistit celý jmenný prostor.
  • Expirace (TTL). Úložiště nemá vestavěnou expiraci. Uložte časové razítko dovnitř value (jako v příkladu s keší) a při čtení ho kontrolujte, nebo přidejte pole DATE_TIME a pravidelně čistěte zastaralé řádky z funkce spouštěné cronem.
  • Co ukládat. RAW_JSON obsahuje libovolnou JSON-serializovatelnou hodnotu — čísla, řetězce, pole, objekty. Držte záznamy malé; toto je určeno pro koordinaci a kešování, ne pro velké objekty blob nebo soubory. Pro soubory použijte pole FILES a uploadFile.
  • Viditelnost a oprávnění. Řádky žijí v databázi pracovního prostoru jako jakýkoli jiný záznam, takže je lze dotazovat přes API a respektují role vaší aplikace. Aby se úložiště neobjevovalo v hlavním rozhraní, neuvádějte ho v navigačním menu.
  • Vazba na záznam. Potřebujete stav na úrovni jednotlivých záznamů místo globálních klíčů? Přidejte relaci z objektu úložiště na cílový objekt namísto zakódování id do klíče.
Jde o konvenci, ne o samostatnou funkci — „KV Store“ je pouze běžný vlastní objekt, který definujete a dotazujete přes standardní API. To znamená, že těží ze stejné synchronizace, oprávnění a nástrojů jako ostatní data vaší aplikace.