更新Chrome存储对象键值

Updating Chrome storage object key value

本文关键字:键值 对象 存储 Chrome 更新      更新时间:2023-09-26

我正在创建一个Google Chrome扩展,我正在使用chrome.storage.sync.set函数保存信息。根据API,您可以创建对象并保存帐户之间的信息。虽然我在创建这个对象时没有遇到任何麻烦,但我在更新特定的键和同步值时遇到了麻烦,而没有为每个更改创建一个完全独立的对象。

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

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

我想简单地更新值'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 */

这个方法也不起作用。

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

如果您在"set"完成之前立即调用"get",这可能就是问题所在。您的示例没有显示传递回调来处理"set"的完成。

我在寻找解决同样问题的时候偶然发现了你的帖子。我最终使用了与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});