Невозможно передать объект в chrome локальное хранилище - PullRequest
0 голосов
/ 06 марта 2020

Я работал над своим расширением, используя chrome локальное хранилище, и я хотел очистить локальный кеш, поэтому я использовал chrome.storage.local.clear(). Теперь я хочу добавить больше данных в локальное хранилище, используя chrome.storage.local.set(), но он возвращает неопределенное значение при передаче объекта, даже если он работал до очистки.

Это работает

chrome.storage.local.set({key: 'value'})

chrome.storage.local.get(['key'], result => {
    console.log(result.key) // returns value
})

Но это не

const obj = {
    key: 'value'
}

chrome.storage.local.set(obj)

chrome.storage.local.get(['obj'], result => {
    console.log(result.obj) // returns undefined
})

Мне нужно иметь возможность передать объект chrome.storage.local.set

1 Ответ

2 голосов
/ 06 марта 2020

Когда вы устанавливаете объект, имя ключа устанавливается только на key. Но у вас возникла проблема, потому что вы пытаетесь получить доступ к ключевому имени obj, которого не существует. Вы можете получить доступ к значению ключа следующим образом:

const obj = { key: 'value'}

chrome.storage.local.set(obj);

chrome.storage.local.get(['key'], result => {
    console.log(result.key) // returns 'value'
})

Для получения дополнительной информации:

Для хранения объекта в chrome.storage:

const name: {
   first: 'Bob',
   last: 'Smith'
}

chrome.storage.local.set({ key: name });

chrome.storage.local.get(['key'], result => {
   console.log(result.key) // returns { first: 'Bob', last: 'Smith' }
   console.log(result.key.first)
   console.log(result.key.last)
})

Вы также можете деструктурировать объект result, чтобы получить ключи, такие как:

chrome.storage.local.get(['key'], ({key}) => {
   console.log(key) // returns { first: 'Bob', last: 'Smith' }
   console.log(key.first)
   console.log(key.last)
})

Получить все содержимое хранилища

Как указано в документации :

Один ключ для получения, список ключей для получения или словарь с указанием значений по умолчанию (см. описание объекта). Пустой список или объект вернут пустой объект результата. Введите нулевое значение, чтобы получить все содержимое хранилища.

chrome.storage.local.get(null, function(items) {
   var allKeys = Object.keys(items);
   console.log(allKeys);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...