Я создаю расширение chrome, в котором мне нужно использовать хранилище данных. Работа расширения выглядит следующим образом:
- Расширение захватывает URL-адрес любого запроса на получение или отправку
- Если URL-адрес уже присутствует в паре ключ: значение в качестве ключа затем я получаю значение и как-то показываю его в браузере
- Если URL-адрес отсутствует в хранилище, я вызываю API, который выполняет некоторые операции с URL-адресом и возвращает ответ. Затем я сохраняю пару URL-ответа как ключ: значение в хранилище. Причина, по которой я делаю это, чтобы мне не приходилось вызывать API в следующий раз, когда появится тот же URL. Тогда я просто проверю свое хранилище.
Я написал следующий код для установки значений в хранилище.
chrome.storage.sync.set({user_url: show_action}, function() {
console.log('Key is ' + user_url);
console.log('Value is set to ' + show_action);
});
Переменная user_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;
});
Это не работает должным образом. Я получаю пустой result
без пар ключ-значение с user_url
в качестве ключа. Хотя он должен быть там, потому что я устанавливаю значение перед извлечением. Затем я попытался поместить user_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_url
устанавливается как ключ, а не значение в нем. Мой вопрос: как мне установить URL-адрес в качестве ключа, и когда я звоню по URL-адресу, я получаю желаемый результат? А также как справиться с ситуацией, когда я звоню по URL-адресу, но его нет в хранилище?