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

Hut*_*ibu 6 javascript indexeddb

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

(现在indexedDB对于这个简单的工作似乎有些过分,但由于它是唯一没有限制的跨浏览器解决方案(如localStorage),我不得不使用它......它的工作原理)

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

#| key(timeID)| 值

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

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

2 ....

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

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

现在所有这些都有效.

但现在我只想加载缩略图(¨tnData¨) - 但不是真正的图像(d数据可能很大).

所以我希望有像store.get(id,¨tnData¨)这样的东西......

但到目前为止我还没找到它.有没有人知道这样做的简单方法,而不必重做我的数据库?

在此先感谢...如果我不在正确的地方或打破了其他规则,我很抱歉...对我来说第一个问题;)

dum*_*ter 3

有谁知道一种简单的方法来做到这一点,而不必重新设计我的数据库?

不,IndexedDB 不允许您仅返回对象的一部分。

尽管重新设计你的数据库可能并不太难。您可以将其分成两个对象存储,一个用于缩略图,一个用于整个图像。然后你就可以专门查询你想要的那个了。

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