我正在做的是在客户端上保存和检索大量图像。
(现在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¨)......
这样的东西但到目前为止我还没有找到它。 有没有人知道这样做的简单方法,而不必重新编写我的数据库?
提前致谢...对不起,如果我不在正确的地方或违反了其他规则......对我来说第一个问题;)
答案 0 :(得分:3)
有没有人知道这样做的简单方法,而不必重写我的数据库?
不,IndexedDB不允许您只返回对象的一部分。
虽然重新编写数据库可能不会太难。您可以将其分成两个对象库,一个用于缩略图,一个用于整个图像。然后你可以专门查询你想要的那个。
如果您经常同时获得两者,那么您必须进行一些基准测试,看看实际上是否更快打破它们,或者复制缩略图甚至可能有意义(就像你现在拥有的一个对象商店,还有一个只有缩略图的商店。