IndexedDB和关系

Jos*_*son 6 javascript indexeddb

我可以在IndexedDB中的对象库之间创建关系吗?

例如,我有两个对象存储:artistalbum.与一个人artist有一对多的关系album.album.artistId将专辑与...联系起来artist.id.

我在想Hibernate.我愿做一个艺术家查询,并有属于返回称为数组艺术家的专辑artists中的album对象.

artist.albums = [];
Run Code Online (Sandbox Code Playgroud)

跟进(4.5年后,2017年)

下面有一些很好的答案可以很好地回答这个问题.我想补充一点,我最初试图将IndexedDB用作关系存储,并在其上构建类似ORM的解决方案,但它并不适合.IndexedDB是一个NoSQL数据库,因为我开始以这种方式处理它,它更有意义,我的项目更容易管理.我希望这为那些不断遇到它的人增加一些原始问题的价值.

小智 2

indexedDB 提供了创建、读取、更新和删除(CRUD)对象“记录”的低级方法。但标准并没有定义关系操作的具体方法。目标是保持标准简单,并允许开发人员以他们认为合适的任何方式实现更高级别的功能。然而,您所要求的仍然可以通过您的少量开发来实现。

为了帮助解决这个问题,Parashuram Narasimhan 为 indexedDB 编写了一个 Jquery 实现,它将为您完成这项工作。

Jquery indexedDB 示例 1

Jquery indexedDB 示例 2

考虑以下普遍的可能性:

$.indexeddb("MyDatabase")
  .objectStore("Artist")
  .openCursor()
  .each(function(){
    //Got Artist
    //Enumerate for Albums
    $.indexeddb("MyDatabase")
      .objectStore("Artist")
      .openCursor()
      .each(function(){
        //Check for matching artist.Id
        //if this albums's artist matches artist
        //then do something
        }
      ;
    }
  ;
Run Code Online (Sandbox Code Playgroud)

回答有点晚了,但我希望它能帮助润滑齿轮一点。