优化:从 IndexedDB 获取特定值(而不是更多)

Optimizing: Get specific Value(and not more) from IndexedDB

我正在做的是在客户端上保存和检索大量图像。

(现在 indexedDB 对于这个简单的工作来说似乎有点过分了,但是因为它是唯一没有限制的跨浏览器解决方案(比如 localStorage),所以我不得不使用它......而且它有效)

这是我的数据库的样子: (更具体地说,我的数据库的唯一对象库)

# | key(timeID) | value

0 | 812378123 | {data:¨....¨, tnData:¨...¨, timeID:812378123}

1 | 912378123 | {data:¨....¨, tnData:¨...¨, timeID:912378123}

2 ....

KeyValue 是一个唯一的 TimeID,Data 包含图像作为文本,tnData 包含此图像的缩略图作为文本 (当 canvas.toBlob() 准备就绪时,我会切换到那个)

要检索图像,我只使用 store.get(id)

现在一切正常了。

但现在我只想加载缩略图 (¨tnData¨) - 但不是真实图像(¨data¨ 可能会很大)。

所以我希望有类似 store.get(id, ¨tnData¨) ...

但是我至今没有找到。 有谁知道一个简单的方法来做到这一点,而不必返工我的数据库?

在此先感谢...如果我不在正确的位置或违反了其他规则,我深表歉意...我的第一个问题 ;)

Does anyone know of a easy way of doing this, without having to rework my db?

不,IndexedDB 不允许您 return 对象的一部分。

尽管重新处理您的数据库可能并不难。您可以将其分成两个对象存储,一个用于缩略图,一个用于整个图像。然后你可以具体查询你想要的那个。

如果您经常同时获得两者,则必须进行一些基准测试,看看将它们分开是否真的更快,或者复制缩略图(一个对象)甚至可能有意义像现在一样存储,并且只有缩略图)。