W jaki sposób radzisz sobie z relacjami wiele do wielu w IndexedDB?Dowiązania IndexedDB i wiele-do-wielu
Na przykład powiedzmy, że mam obiekt Blog
do przechowywania posta na blogu i obiektu Tag
dla tagu/etykiety posta na blogu. Jeden Blog
może mieć wiele Tag
s i jeden Tag
może być używany przez wiele Blog
s.
Chciałbym stworzyć blog store
i tag store
(choć jestem otwarty na sugestie) do domu dwa rodzaje obiektów:
// ...
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});
Off strony mogę myśleć dwa sposoby, aby połączyć dwa:
- mają
Blog.tags
który byłby tablicąBlogTag
przedmiotów posiadanychblogId
itagId
(i będzie się również w magazynie dla pamięci) lub - mają
Blog.tags
który byłby tablicątagId
S, które mogą być stosowane, by wyszukaćTag
s.
Pierwszy sposób wydaje się dłuższy z wiatrem, ale w jaki sposób zostanie rozwiązany w SQL. Czy to tylko bagaż SQL, który powinienem zostawić?
Przypuszczam, że trzecią drogą byłoby, aby Blog.tags
był tablicą Tag
s. Wydaje się to najprostsze, ale potem nie mogłem zapytać o s. Tag
lub ponownie używać tagów na blogach (czy też ja?).
Czy ktoś inny radził sobie z taką sytuacją z indexedDB? Jeśli tak, to co robiłeś? Jakie były pułapki?