5

IndexedDB で多対多の関係をどのように処理していますか?

たとえばBlog、ブログ投稿を保持するオブジェクトと、ブログ投稿Tagのタグ/ラベルのオブジェクトがあるとします。1 つは複数の をBlog持ちTag、1 つは複数のTagで使用できますBlog

2 種類のオブジェクトを格納するために and を作成します (ただし、提案は受け付けていますblog store) 。tag store

// ...
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});

手に負えず、2つをリンクする2つの方法を考えることができます:

  1. andを保持するオブジェクトBlog.tagsの配列であるa を持っている(また、検索のためにストアにある) またはBlogTagblogIdtagId
  2. s を検索するために使用できる s のBlog.tags配列になるaがあります。tagIdTag

最初の方法はややこしいようですが、SQL でこれを処理する方法です。それは私が残すべき単なる SQL 手荷物ですか?

3番目の方法は、sのBlog.tags配列にすることだと思いますTag。これは最も単純なように思えますが、ブログ全体で s をクエリしTagたり、タグを再利用したりすることができませんでした (または可能でしたか?)。

他の誰かが indexedDB でそのような状況を処理しましたか? もしそうなら、あなたは結局何をしましたか?いくつかの落とし穴は何でしたか?

4

1 に答える 1