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

时间:2016-03-06 13:48:42

标签: 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¨) - 但不是真正的图像(“数据”可能很大)。

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

这样的东西

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

提前致谢...对不起,如果我不在正确的地方或违反了其他规则......对我来说第一个问题;)

1 个答案:

答案 0 :(得分:3)

  

有没有人知道这样做的简单方法,而不必重写我的数据库?

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

虽然重新编写数据库可能不会太难。您可以将其分成两个对象库,一个用于缩略图,一个用于整个图像。然后你可以专门查询你想要的那个。

如果您经常同时获得两者,那么您必须进行一些基准测试,看看实际上是否更快打破它们,或者复制缩略图甚至可能有意义(就像你现在拥有的一个对象商店,还有一个只有缩略图的商店。