Ошибка: неправильные типы аргументов для хранилища.StoreArea.set
Мне нужно хранить массив объектов, используя storage.local
, Когда я пытаюсь позвонить set
чтобы вставить данные в хранилище, я получаю следующую ошибку:
Error: Incorrect argument types for storage.StorageArea.set.
Вот манифест:
{
"manifest_version": 2,
"name": "test",
"version": "1.0",
"icons": {
"64": "icons/myicon.png"
},
"browser_action": {
"default_icon": "icons/myicon.png",
"default_title": "test",
"default_popup": "popup/input.html"
},
"background": {
"scripts": ["test.js"]
},
"permissions": [
"webRequest",
"storage"
]
}
Вот сценарий:
browser.storage.local.set([{name:"Mog", eats:"mice"},{name:"Kraken", eats:"people"}]);
console.log(browser.storage.local.get());
Недостаточно ресурсов для веб-расширения. Так что, извините за примитивный вопрос.
1 ответ
storage.local.set
ожидает простой объект, а не массив. Хотя Array - это Object, в его прототипе есть нечто большее, чем обычный Object. Это на самом деле хорошо для применения, так как разрешение хранить пустой массив может привести к путанице. Например, что происходит, когда вы сохраняете новый массив, который короче? Следует ли удалить все записи, отсутствующие во вновь сохраненном массиве, или оставить их и вернуть их при получении данных?
Чтобы выполнить то, что вы хотите, вам просто нужно выбрать имя (ключ) для хранения вашего массива. Вы можете использовать что-то вроде:
browser.storage.local.set({
myArray: [{
name: "Mog",
eats: "mice"
}, {
name: "Kraken",
eats: "people"
}]
});