Как вы все обрабатываете отношения «многие ко многим» в IndexedDB?
Например, скажем, у меня есть объект Blog
для хранения сообщения в блоге и Тег
объект для тега / метки сообщения в блоге. Один блог
может иметь много тегов
, а один тег
может использоваться многими блогами
.
Я бы создал хранилище блогов
и хранилище тегов
(хотя я открыт для предложений) для размещения двух типов объектов:
// ...
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});
Я могу придумать два способа связать эти два:
Blog.tags
, который будет массивом из BlogTag
объектов, содержащих blogId
и tagId
(и также будет в магазине для поиска) или Blog.tags
, который будет массивом tagId
s, который можно использовать для поиска Тег
s. Первый способ кажется сложным, но это то, как с этим можно справиться в SQL.Это просто SQL-багаж, который я должен оставить?
Я полагаю, что третий способ - сделать Blog.tags
массивом Tag
s. Это кажется самым простым, но тогда я не мог запросить Tag
s или повторно использовать теги в блогах (а мог ли я?).
Кто-нибудь еще справлялся с такой ситуацией с indexedDB? Если да, то чем вы закончили? Какие были подводные камни?