[object store
与'data'
之间有一个keyPath: 'id'
,如下所示的结构化数据
{"id":860,
"data":{
"a":[], // json array
"b":[], // json array
"c":{}, // json object
"d":{}, // json object
}
}
不得重复此结构化数据,并且只能在data
对象存储库中写入此结构化数据中的一个。但是,可以对其进行更新和扩展。
为了更新此文档,到目前为止,我所做的是获取整个文档并追加数据,然后像下面这样重写和替换旧文档:
if (data != undefined) {
data.a.push(obj); <= update
var item = { id:860, data: data };
write('data', item); <= replace on the old document
}
尽管这还不够好。因为,当文档很大时,我必须在旧文档上fat fat document和replace fat document。
您知道如何通过不使用获取和替换来更新文档吗?
我不太确定为什么您要一个对象存储N个数据记录而不是N个对象。
该项目旨在仅处理该文档的一个实例。因为每个ID
都基于1个身份实例。因此,我应防止object store
复制此文档,无论是旧文档还是新文档。
值得一提的是,代码的其他部分处理了该文档的1个实例。否则,将引发异常或新旧文档混合出现。
但是在那个对象中,您拥有不断增长的数据。那是什么点更大的对象?
拥有单个文档实例的主要目的是[CRUD
上的完整性和简化 indexedDB
”。
例如:如果我实际上将电流object store
划分为几个object store
,则会使indexedDB
的维护更加困难。因为,我必须处理几个object store
,而不是处理object store
。确实,不断更新object stores
会更加困难。
据我所知,在使用IDB数据时,您必须读入并传递整个对象。如果发现设置存在性能问题,则可以考虑将大对象分解为许多对象。