在localForage中向数组追加内容

13

我正在使用localForage在网站上存储一些数据���以使其脱机可用。

我想要一个键并将其附加到值/数组中。

到目前为止,我只能想到从存储中检索整个键/值,然后追加并再次设置整个键/值。这似乎非常浪费,并且在键/值变得更大时可能会有问题。

var obj = ...
localforage.getItem('documents', function(err, value) {
  value.push(obj);
  localforage.setItem('documents', value);
}

有没有更有效率的方法来做这个?如果键/值有多大才能注意到性能问题?


3
我不认为那是可能的。但是你可以制作一个带有像 key-1key-2 等这样的密钥系统。 - NatureShade
1个回答

7

我知道这是一个老问题,但想提供一些信息。根据NatureShade的观点,您无法编辑localForage表中的值,只能提取并设置该项。当使用localForage时,针对频繁更改的变量/对象,我通常设置全局变量以便该项使用。进行更改时,我只需更新全局变量,然后更新存储中的项目。这样做的好处是您只需要担心设置localForage键/值,而不必过多涉及异步方面。您还有一个可用于引用此信息的变量,因此您不必一直使用.getItem来访问它。具有全局变量可能不是最佳实践,但这是一种选择。

var globalObject;
localforage.getItem('documents', function(err, value){
    globalObject = value;
}

var obj = ...;
globalObject.push(obj);
localforage.setItem('documents', globalObject);

var obj2 = ...;
globalObject.push(obj2);    
localforage.setItem('documents', globalObject);   

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接