IndexedDB и отношения «многие ко многим»

Как вы все обрабатываете отношения «многие ко многим» в 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});

Я могу придумать два способа связать эти два:

  1. иметь Blog.tags , который будет массивом из BlogTag объектов, содержащих blogId и tagId (и также будет в магазине для поиска) или
  2. иметь Blog.tags , который будет массивом tagId s, который можно использовать для поиска Тег s.

Первый способ кажется сложным, но это то, как с этим можно справиться в SQL.Это просто SQL-багаж, который я должен оставить?

Я полагаю, что третий способ - сделать Blog.tags массивом Tag s. Это кажется самым простым, но тогда я не мог запросить Tag s или повторно использовать теги в блогах (а мог ли я?).

Кто-нибудь еще справлялся с такой ситуацией с indexedDB? Если да, то чем вы закончили? Какие были подводные камни?

5
задан Josh Johnson 6 May 2012 в 13:55
поделиться