node.js - 查询索引 IDB 上的对象

标签 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});
});

我已经使用 restaurant_id 上的索引创建了 reviews 对象存储。

存储的数据如下所示:

{
  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

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

最佳答案

这可能会起作用:

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

与您的尝试的差异:

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

关于node.js - 查询索引 IDB 上的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51119821/

相关文章:

node.js - 如何在 Electron 生成器中添加发布者

javascript - 正确使用 express.js API,如获取、发送、重定向

php - 循环上传indexedDB数据到PHP

javascript - 无法连接到 mongodb

node.js - Nodejs 分析 : parent in (sliced string)

javascript - IndexedDBShim 工作了一段时间,然后产生错误

javascript - indexedDb 打开 onsuccess 且没有 onupgradeneed 事件

javascript - 使用 Dexie.js 处理请求队列异步

node.js - AWS Lambda 制作视频缩略图

javascript - 如何检测已达到 IndexedDB 的存储限制?