Javascript chrome扩展中的数据存储与检索

Javascript chrome扩展中的数据存储与检索,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在构建一个需要使用数据存储的chrome扩展。扩展的操作如下所示: 扩展捕获任何get或post请求的url 如果URL已经作为键存在于storage key:value对中,那么我将检索该值并以某种方式在浏览器中显示它 如果URL不在存储中,那么我调用一个API,对URL执行一些操作并返回一个响应。然后,我将URL响应对作为key:value存储在存储器中。我这样做的原因是,下次出现相同的URL时,我不必调用API。那我就检查一下我的储藏室 我编写了以下代码来设置存储中的值 chrom

我正在构建一个需要使用数据存储的chrome扩展。扩展的操作如下所示:

  • 扩展捕获任何get或post请求的url
  • 如果URL已经作为键存在于storage key:value对中,那么我将检索该值并以某种方式在浏览器中显示它
  • 如果URL不在存储中,那么我调用一个API,对URL执行一些操作并返回一个响应。然后,我将URL响应对作为key:value存储在存储器中。我这样做的原因是,下次出现相同的URL时,我不必调用API。那我就检查一下我的储藏室
我编写了以下代码来设置存储中的值

chrome.storage.sync.set({user_url: show_action}, function() {
    console.log('Key is ' + user_url);
    console.log('Value is set to ' + show_action);
});
user\u url
变量包含从请求捕获的url
show_action
变量保存来自API调用的响应。 我正在尝试使用以下代码检索该值:

chrome.storage.sync.get([user_url], function(result) {
    console.log(result);
    console.log('Value currently is ' + result.user_url);
    if(result.user_url == null || result.user_url == undefined)
        call_api = true;
    else
        show_action = result.user_url;
});
这不是预期的效果。我得到一个空白的
结果
,没有键-值对,键为
user\u url
。虽然它必须在那里,因为我在检索之前设置了值。然后我尝试将
user\u url
作为字符串文本放入get调用中,如下所示:

chrome.storage.sync.get(["user_url"], function(result) {
    console.log(result);
    console.log('Value currently is ' + result.user_url);
});
完成此操作后,控制台日志中的结果如下所示:

{user_url: true}
user_url: true
Value currently is true
因此,
user\u url
本身被设置为键,而不是其中的值。
我的问题是如何将URL设置为键,当我通过URL调用时,我会得到所需的输出?还有,当我通过URL调用但存储中不存在URL时,如何处理这种情况

这一行的
chrome.storage.sync.set({user\u url:show\u action}
user\u url
不会自动翻译,它被视为传递给
chrome.storage.sync.set
的对象的键

您可能希望按如下方式执行此操作:

let data = {};
data[user_url] = show_action;

chrome.storage.sync.set(data, function() {
    console.log('Key is ' + user_url);
    console.log('Value is set to ' + show_action);
});


看起来像是一个you's(应该在回调中使用)错误地访问了一个(应该是result[user_url])。那么我应该怎么做才能得到结果呢?我已经在我的评论中指出,我链接的主题应该包含更多的示例。