gpt4 book ai didi

javascript - 如何正确更新IndexedDB中的文档?

转载 作者:行者123 更新时间:2023-12-02 21:49:04 25 4
gpt4 key购买 nike

有一个名为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
}


但是这还不够好。因为,当文档很大时,我必须获取较胖的文档并替换旧的较胖的文档。

您知道如何通过不使用获取和替换来更新文档吗?

评论/回答


  我不太确定为什么要一个对象存储N个数据记录
  而不是N个对象。


该项目旨在仅处理文档的1个实例。因为每个 ID基于1个身份实例。因此,我应该防止 object store复制该文档,无论是旧文档还是新文档。

值得一提的是,代码的其他部分处理了该文档的1个实例。否则,将引发异常或新旧文档混合出现。


  但是在一个对象中,您拥有不断增长的数据。那是什么
  点更大的对象?


具有单个文档实例的主要目的是完整性&简化 CRUD上的 indexedDB

例如:如果实际上将当前的 object store划分为几个 object store,这会使 indexedDB的维护更加困难。因为,我必须处理几个 object store而不是处理 object store。实际上, object stores不断更新会更加困难。

最佳答案

据我所知,在使用IDB数据时,您必须读入并传递整个对象。如果发现设置存在性能问题,则可以考虑将大对象分解为许多对象。

关于javascript - 如何正确更新IndexedDB中的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60175698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com