key et un champ value vous fournit un stockage clé-valeur durable, limité à l’espace de travail, interrogeable via le même client d’API typé que vous utilisez déjà pour les enregistrements.
Définir l’objet de stockage
Déclarez un objet personnalisé avec deux champs —key (un TEXT unique) et value (un RAW_JSON afin que vous puissiez stocker n’importe quelle charge utile sérialisable en JSON). Voir Objets pour la référence complète de defineObject.
src/objects/kv-store.object.ts
Appliquer l’unicité de la clé
Ajoutez un index unique surkey pour que la même clé ne puisse jamais avoir deux lignes. Ceci est le mécanisme recommandé pour l’unicité — voir Données → Index uniques.
src/indexes/kv-store-key.index.ts
Lire et écrire depuis une fonction logique
Placez l’objet derrière quelques petits utilitaires afin que le reste de votre code se lise comme une API clé-valeur —get, set et del. Ils utilisent CoreApiClient, qui est généré à partir du schéma de votre espace de travail et entièrement typé par rapport à l’objet kvStore.
src/logic-functions/handlers/kv-store.ts
L’index unique protège contre les doublons, mais deux exécutions qui écrivent la même nouvelle clé au même instant peuvent toujours entrer en concurrence entre la recherche et la création. Considérez une création qui échoue sur la contrainte d’unicité comme « quelqu’un d’autre a gagné » — interceptez-la et relisez, ou réessayez sous forme de mise à jour.
Utilisez-le : mettez en cache un appel coûteux
Un cas d’utilisation typique consiste à mettre en cache une réponse tierce lente ou soumise à des limites de débit afin que les exécutions répétées la réutilisent au lieu d’en payer le coût à chaque fois.src/logic-functions/getExchangeRate.logic-function.ts
Modèles et conseils
- Espaces de noms. Préfixez les clés pour séparer les différentes préoccupations et faciliter les recherches en masse —
sync-cursor:linear,cache:exchange-rate:USD:EUR,lock:nightly-report. Filtrez aveckey: { like: 'cache:%' }pour lister ou vider un espace de noms entier. - Expiration (TTL). Le store n’a pas d’expiration intégrée. Stockez un horodatage dans le
value(comme dans l’exemple de cache) et vérifiez-le à la lecture, ou ajoutez un champDATE_TIMEet effacez périodiquement les lignes obsolètes à partir d’une fonction déclenchée par cron. - Que stocker.
RAW_JSONcontient toute valeur sérialisable en JSON — nombres, chaînes de caractères, tableaux, objets. Gardez les entrées petites ; ceci sert à la coordination et à la mise en cache, pas aux blobs volumineux ni aux fichiers. Pour les fichiers, utilisez un champFILESetuploadFile. - Visibilité et autorisations. Les lignes résident dans la base de données de l’espace de travail comme n’importe quel autre enregistrement, elles sont donc interrogeables via l’API et respectent le rôle de votre application. Pour garder le store hors de l’interface principale, ne l’ajoutez pas à votre menu de navigation.
- Portée à un enregistrement. Besoin d’un état par enregistrement plutôt que de clés globales ? Ajoutez une relation de l’objet de stockage vers l’objet cible plutôt que de coder l’identifiant dans la clé.
Il s’agit d’une convention, pas d’une fonctionnalité distincte — le « KV Store » est simplement un objet personnalisé classique que vous définissez et interrogez avec l’API standard. Cela signifie qu’il bénéficie de la même synchronisation, des mêmes autorisations et des mêmes outils que le reste des données de votre application.