IndexedDB e relacionamentos muitos-para-muitos
Como vocês estão lidando com relacionamentos muitos para muitos no IndexedDB?
Por exemplo, digamos que eu tenho umBlog
objeto para armazenar uma postagem no blog e umTag
objeto para uma tag / rótulo da postagem do blog. 1Blog
pode ter muitosTag
s e umTag
pode ser usado por muitosBlog
s.
Eu criaria umblog store
etag store
(embora eu esteja aberto a sugestões) para abrigar os dois tipos de objetos:
// ...
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});
Por outro lado, posso pensar em duas maneiras de vincular as duas:
tenha umBlog.tags
, que seria uma matriz deBlogTag
objetos que contêmblogId
etagId
(e também estaria na loja para recuperação) outenha umBlog.tags
, que seria uma matriz detagId
s que poderiam ser usados para procurar oTag
s.A primeira maneira parece mais complicada, mas é como isso seria resolvido no SQL. Isso é apenas bagagem SQL que devo deixar para trás?
Suponho que uma terceira maneira seria terBlog.tags
seja uma matriz deTag
s. Parece mais simples, mas não pude consultarTag
s ou reutilizar tags nos blogs (ou posso?).
Alguém mais lidou com essa situação com o indexedDB? Se sim, o que você acabou fazendo? Quais foram algumas armadilhas?