Come gestite tutti i rapporti molti-a-molti in IndexedDB?IndexedDB e relazioni molti-a-molti
Ad esempio, supponiamo di avere un oggetto Blog
per contenere un post di blog e un oggetto Tag
per un tag/etichetta del post del blog. Uno Blog
può avere molti Tag
s e uno Tag
può essere utilizzato da molti Blog
s.
vorrei creare un blog store
e tag store
(anche se io sono aperto a suggerimenti) per ospitare i due tipi di oggetti:
// ...
var blogStore = db.createObjectStore("blog", {keyPath: "blogId", autoIncrement: true});
blogStore.createIndex("title", "title", {unique: true});
var tagStore = db.createObjectStore("tag", {keyPath: "tagId", autoIncrement: true});
tagStore.createIndex("label", "label", {unique: true});
Fuori mano mi vengono in mente due modi per collegare i due:
- hanno un
Blog.tags
che sarebbe un array diBlogTag
oggetti che detieneblogId
etagId
(e sarebbe anche nel deposito per il recupero) o - ha un
Blog.tags
che sarebbe un array ditagId
s che potrebbe essere utilizzato per cercare ilTag
s.
Il primo modo sembra più prolisso ma è come questo sarebbe affrontato in SQL. È solo un bagaglio di SQL che dovrei lasciare?
Suppongo che un terzo modo sarebbe avere Blog.tags
un array di Tag
s. Questo sembra il più semplice, ma non potrei richiedere il Tag
s o riutilizzare i tag sui blog (o potrei?).
Qualcun altro ha gestito una situazione del genere con indexedDB? Se sì, cosa hai finito? Quali erano alcune insidie?