更新Chrome存储对象键值

时间:2014-07-07 05:15:58

标签: javascript html google-chrome google-chrome-extension google-chrome-app

我正在创建Google Chrome扩展程序,并且使用chrome.storage.sync.set功能保存信息。根据API,您可以创建一个对象并在帐户之间保存信息。虽然我在创建此对象时没有遇到任何问题,但我无法更新特定键并同步值,而无需为每个更改创建完全独立的对象。

例如,当登录到控制台时,我的对象看起来像这样:

{
    profile: {
        preferences: {
            username: 'my username'
        }
    }
}

我想简单地更新值'用户名'。

我尝试过这样的事情(我可以​​通过chrome.storage.sync.set函数回调访问该对象):

_ext.profile.preferences.username = 'my new username';

这会更新对象,但不保存并存储它。

我也尝试过这种方法:

_ext.profile.preferences.username = 'my new username 2'; /* update the key value */
chrome.storage.sync.set(_ext.profile) /* save the entire object to memory */

这种方法也没有用。

您认为这里的问题是什么?这是我尝试保存对象的方式,还是有更好的方法来设置基于设置的方法?

2 个答案:

答案 0 :(得分:2)

如果你打电话"得到"马上,在" set"之前已经完成,这可能是问题所在。您的示例未显示传递回调以处理" set"。

的完成

答案 1 :(得分:1)

我在寻找解决相同问题的过程中偶然发现了您的帖子。我最终使用了与 React Redux 状态管理类似的方法。我没有尝试操作存储的数据,而是复制然后替换它。

var data = {}; 
chrome.storage.sync.get(function(result){
data = result.storedData;
data.profile.preferences.username = 'my new username';
});  
chrome.storage.sync.set({'storedData': data});