Magasin clé/valeur
Un magasin clé/valeur par application, basé sur SQLite, exposé via le SDK loopback à /__bext/sdk/kv/*. Définir, récupérer, lister par préfixe et supprimer — avec un ttl optionnel (en secondes) pour les lignes auto-expirantes. Toutes les clés ici vivent sous l'espace de noms de l'application demo-kv.
Astuce
Chaque store est cloisonné par l'en-tête X-Bext-App-Id : deux apps peuvent utiliser la clé session:42 sans jamais se croiser. Donnez un ttl pour qu'une ligne disparaisse toute seule — idéal pour des caches ou des jetons à durée de vie courte.
Définir une clé
Clés (3)
| clé | valeur | |
|---|---|---|
| check-1781135966 | ok123 | |
| counter | 2 | |
| greeting | hello world |
// KV is a per-app key/value store (SQLite-backed) with optional TTL.
// PRISM pages reach it over the loopback SDK; no admin token needed.
const SDK = "http://127.0.0.1/__bext/sdk";
const APP = "demo-kv";
const h = { "X-Bext-App-Id": APP, "Content-Type": "application/json" };
// set with a 60s TTL — the row self-expires
await fetch(SDK + "/kv/set", { method: "POST", headers: h,
body: JSON.stringify({ key: "session:42", value: { user: "ada" }, ttl: 60 }) });
// get — value comes back as the JSON text you stored
const { value } = await (await fetch(SDK + "/kv/get", { method: "POST", headers: h,
body: JSON.stringify({ key: "session:42" }) })).json();
// list keys by prefix, then delete
await fetch(SDK + "/kv/list", { method: "POST", headers: h,
body: JSON.stringify({ prefix: "session:", limit: 100 }) });
await fetch(SDK + "/kv/delete", { method: "POST", headers: h,
body: JSON.stringify({ key: "session:42" }) });