查询索引IDB

时间:2018-07-01 01:52:46

标签: node.js indexeddb

似乎应该很简单,但是我无法弄清楚如何根据某个索引来查询对象存储。

按这样创建数据库:

dbPromise = idb.open(idb_name, idb_version, db => {
  const reviewStore = db.createObjectStore('reviews', {
    keyPath: 'id'
  });
  reviewStore.createIndex('restaurant_id', 'restaurant_id', {unique: false});
});

我已经创建了reviews对象存储,并在restaurant_id上建立了索引。

存储的数据如下:

{
  comment: "Mission Chinese Food has grown...",
  createdAt: 1504095567183,
  id: 1123
  restaurant_id: 1
}

但是,当我这样拨打get时:

db.transaction('reviews').objectStore('reviews').get('1')...

我得到id为1或不为restaurant_id的对象。

如何检索与指定索引值匹配的对象数组?

1 个答案:

答案 0 :(得分:3)

这可能会起作用:

db.transaction('reviews').objectStore('reviews').index('restaurant_id').getAll(1)

与您尝试的差异:

  • 您必须明确告诉它要使用的索引,否则,您会注意到,它将查询主键
  • get检索单个记录,但是getAll检索与查询匹配的所有记录的数组。旧的浏览器(和当前版本的Edge)不支持getAll,但是如果需要,可以使用a polyfill
  • 1而不是'1',可能只是您问题中的错字:)