2016-12-08 2 views
0

Я создаю расширение Chrome, и я пытаюсь использовать возможности Chrome для хранения объектов с помощью их API-интерфейсов chrome.storage. Я успешно смог установить объект, но когда я пытаюсь его получить, я не могу это сделать. Вероятнее всего, это проблема с chrome.storage и больше связана с моей неопытности с получением данных из объектов JSON.Как получить данные объекта, которые я установил в chrome.storage?

Вот код, который я использую для установки объекта на хранение.

var ids = { "a":1234, "b":5678 }; 
    var obj= {}; 
    var key = "MyChromeKey"; 
    obj[key] = ids; 
    chrome.storage.sync.set(obj); 

Когда я использую .get объект появляется в моей консоли так же, как я ожидаю его. Но я не могу за всю жизнь понять, как получить, например, значение a.

chrome.storage.sync.get(key,function(result){ 
    console.log(key,result);  // MyChromeKey > Object {MyChromeKey: Object} 
    console.log(result["a"]);  // undefined 
    console.log(key,result["a"]); // MyChromeKey undefined 
    }); 

Любая помощь была бы принята с благодарностью.

+0

насчет 'результата [«а»]'? – httpNick

+0

Возвращает 'undefined' – jkupczak

+0

try chrome.storage.sync.get (" a ", function (result) {console.log (result)}); – httpNick

ответ

1

API хранения Хром вернет объект, который будет находиться в форме {"yourKeyName": Object}, поэтому для доступа к значению внутри этого объекта вам нужно будет сначала пройти через уровень «yourKeyName», а затем получить доступ к базовому объект. EDIT: причина, по которой он возвращает его в этом формате, состоит в том, что «вы можете дать массив ключей, и он возвращает объект со значениями всех этих ключей». (Спасибо пользователю SO Barmar!)

result["MyChromeKey"]["a"] будет работать для вашего кода.

+0

Причина в том, что вы можете дать массив ключей, и он возвращает объект со значениями всех этих ключей. Один ключ обрабатывается как массив из 1 ключа. – Barmar

+0

Спасибо, Бармар, отредактировал ответ! – httpNick

0

Параметр результата вашей функции callback является стандартным объектом Javascript.

Если все, что вы хотите, чтобы зарегистрировать ее на консоль, попробуйте следующее в функции callback:

console.log(result[key]);