Abrufen, Setzen, Löschen
Importieren Siekv aus twenty-sdk/logic-function. Werte können beliebige JSON-serialisierbare Werte sein.
src/logic-functions/sync-linear-issues.ts
Geltungsbereiche
Jeder Eintrag hat einen Geltungsbereich, der bei jedem Aufruf als Option übergeben wird. Der Standardwert istWORKSPACE.
WORKSPACE(Standard) – der Eintrag ist nur für die aktuelle Workspace-Installation Ihrer App sichtbar. Jeder Workspace, der die App installiert, erhält seinen eigenen unabhängigen Satz von Schlüsseln. Das ist genau das, was Sie für Caches, Cursor und workspacespezifischen Zustand benötigen.SERVER– der Eintrag wird über alle Installationen Ihrer App auf dem Server hinweg geteilt. Server-Einträge verhalten sich wie Claims: Der gespeicherte Wert ist immer die workspaceId, die den Schlüssel beansprucht hat (lassen Sievaluebeisetweg, um den Schlüssel für den aktuellen Workspace zu beanspruchen), und nur dieser Workspace kann ihn überschreiben oder löschen. Jede Installation kann den Eintrag lesen.
kv.set löst eine Exception aus, wenn der Schlüssel bereits von einem anderen Workspace beansprucht wurde.
Verwenden Sie ihn: einen teuren Aufruf zwischenspeichern
Eine typische Verwendung ist das Zwischenspeichern einer langsamen oder ratelimitierten Antwort eines Drittanbieters, sodass wiederholte Durchläufe sie wiederverwenden, anstatt jedes Mal die Kosten zu tragen.src/logic-functions/getExchangeRate.logic-function.ts
Muster & Tipps
- Namespacing. Präfixieren Sie Schlüssel, um unterschiedliche Belange getrennt zu halten –
sync-cursor:linear,cache:exchange-rate:USD:EUR,lock:nightly-report. - Ablauf (TTL). Der Store hat keine eingebaute Ablaufzeit. Speichern Sie einen Zeitstempel im Wert (wie im Cache-Beispiel) und prüfen Sie ihn beim Lesen, oder löschen Sie veraltete Schlüssel aus einer cron-getriggerten Funktion.
- Was gespeichert wird. Jeder JSON-serialisierbare Wert – Zahlen, Zeichenketten, Arrays, Objekte. Halten Sie Einträge klein; dies ist für Koordination und Caching gedacht, nicht für große Blobs oder Dateien. Für Dateien verwenden Sie ein
FILES-Feld unduploadFile. - Sichtbarkeit. Einträge liegen in der Instanzdatenbank, nicht als Workspace-Datensätze – sie erscheinen nie in der Workspace-UI, sind kein Teil des Datenmodells Ihrer App und benötigen keine Rollen- oder Objektberechtigungen.
Alternative: ein abfragbares Store-Objekt
Der integrierte Store ist bewusst intransparent: Einträge sind keine Datensätze, daher können Sie sie nicht in der UI durchsuchen, nicht mit anderen Objekten verknüpfen oder mit Record-Abfragen filtern. Wenn Sie irgendetwas davon benötigen – etwa ein sichtbares Sync-Log oder pro-Datensatz-Zustand – definieren Sie stattdessen ein kleines technisches Objekt mit einem eindeutigenkey-Feld und einem RAW_JSON-value-Feld und fragen Sie es über den typisierten API-Client ab. Siehe Objekte für die Referenz zu defineObject und Daten → Eindeutige Indizes zur Durchsetzung der Schlüssel-Eindeutigkeit.
- Geltungsbereich für einen Datensatz. Fügen Sie vom Store-Objekt eine Relation zum Zielobjekt hinzu, anstatt die ID in den Schlüssel zu kodieren.
- Sichtbarkeit & Berechtigungen. Zeilen befinden sich wie jeder andere Datensatz in der Workspace-Datenbank, sind also über die API abfragbar und respektieren die Rolle Ihrer App. Um den Store aus dem Haupt-UI herauszuhalten, führen Sie ihn nicht in Ihrem Navigationsmenü auf.
Im Gegensatz zum integrierten Store ist ein benutzerdefiniertes Objekt immer auf einen Workspace begrenzt – es kann keine Einträge über Installationen hinweg teilen, so wie es
SERVER-Schlüssel tun.