Om funksjonen
Formål
Muliggjør integrasjon mellom to selvstendige apper på samme origin (f.eks. turer/ og okonomi/) ved at én app leser (aldri skriver) rader direkte fra den andres IndexedDB, uten server, uten delt kodebase, og uten at noen av appene trenger å vite om den andre ved oppstart.
Egner seg for
- Å vise data fra en annen app i denne løsningen som supplerende kontekst - f.eks. en tur-velger i okonomi/ bygget fra turer/ sine reiser, eller faktisk transaksjonsforbruk i turer/ hentet fra okonomi/ sine transaksjoner.
- Situasjoner der den andre appen kanskje aldri har vært brukt på denne enheten - funksjonen gir da bare en tom liste, ikke en feil.
Egner seg ikke for
- Skriving/endring av data i en annen apps database - funksjonen støtter kun lesing, og skal ikke utvides til å skrive; hver app eier fortsatt sin egen database fullt ut.
- Oppslag i egen apps database - bruk det vanlige js/shared/db.js-oppsettet direkte, denne funksjonen er kun for å krysse app-grenser.
Signatur(er)
readExternalStore(databaseName: string, storeName: string) => Promise<Array<object>>
| Parameter | Type | Beskrivelse |
|---|---|---|
databaseName | string | Navnet på den andre appens IndexedDB-database (samme streng som gis til indexedDB.open i dens egen js/shared/db.js). |
storeName | string | Navnet på object store-en som skal leses ut i sin helhet. |
Returnerer: Alle rader i storen, eller en tom liste hvis databasen/storen ikke finnes ennå, åpningen ble blokkert, eller lesingen av annen grunn feilet.
import {readExternalStore} from "/designsystem/funksjoner/lagring/read-external-store/read-external-store.js";
// Fra okonomi/: les turer/ sine reiser for å tilby et velg-tur-felt.
const trips = await readExternalStore("turer", "trips");
Tilgjengelighet
Ikke relevant: ren logikk uten DOM eller UI.
Referanser
Se også:
../../nettverk/fetch-with-cache/index.html - Deler withTimeout()-mønsteret som hindrer en hengende indexedDB.open() i å blokkere for alltid.
Avhengigheter: ../../nettverk/fetch-with-cache/fetch-with-cache.js