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つの方法を考えることができます:
- andを保持するオブジェクト
Blog.tags
の配列であるa を持っている(また、検索のためにストアにある) またはBlogTag
blogId
tagId
- s を検索するために使用できる s の
Blog.tags
配列になるaがあります。tagId
Tag
最初の方法はややこしいようですが、SQL でこれを処理する方法です。それは私が残すべき単なる SQL 手荷物ですか?
3番目の方法は、sのBlog.tags
配列にすることだと思いますTag
。これは最も単純なように思えますが、ブログ全体で s をクエリしTag
たり、タグを再利用したりすることができませんでした (または可能でしたか?)。
他の誰かが indexedDB でそのような状況を処理しましたか? もしそうなら、あなたは結局何をしましたか?いくつかの落とし穴は何でしたか?