Chrome.storage将值附加到对象

时间:2015-11-02 03:13:51

标签: javascript google-chrome-extension google-chrome-storage

我有以下意外行为的代码块:

//Where url and info are strings
function addURL(url, info){
    chrome.storage.sync.get("data", function(items) {
        items[url] = info;

        chrome.storage.sync.set({"data" : items}, function() {});
    }); 
}

我的目标是从存储中取出“数据”键值对,使用url键和分钟值为该对象添加新索引,然后用新值替换先前的“data”值

相反,我正在创建一个嵌套结构,其中此代码在第一次正确执行时,但在后续添加时,对象内部会出现嵌套的“数据”块,如下所示:

data
  url3 -> info3
  data
    url2 -> info2
        data
        url1 -> info1

虽然我期待的是

data
    url1 -> info1
    url2 -> info2
    url3 -> info3

1 个答案:

答案 0 :(得分:1)

我想如果您记录或检查传递给回调函数的参数items的内容,您会发现它的格式为:{ data: {...} }。 所以你只需要这样做:

    items.data[url] = info;

    chrome.storage.sync.set(items, function() {});