我正在创建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 */
这种方法也没有用。
您认为这里的问题是什么?这是我尝试保存对象的方式,还是有更好的方法来设置基于设置的方法?
答案 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});