Chrome.storage.local Проблемы с записью ключей

Я пытаюсь интегрировать хранилище Chrome в свое расширение. И у меня возникли проблемы с пониманием того, как данные хранятся после их записи, потому что ничего из того, что я пытаюсь сделать, не работает. То, что я хочу сделать, это сохранить объект с определенным ключом. Но этот ключ генерируется во время выполнения динамически.

Так что у меня есть что-то вроде этого до сих пор.

 let storage = {};
storage["status"] = "no status";
chrome.storage.local.set(storage,function(){

});

Когда я это делаю, ключ автоматически становится «хранилищем», но я не хочу этого делать. Потому что я хочу, чтобы ключ каждый раз был уникальным. Так что в идеале я хочу сделать это

let storageid = generateid();//generate unique storage id
let storage = {};
storage["status"] = "no status";
chrome.storage.local.set({storageid: storage},function(){

});

Но даже в этом случае ключ по-прежнему является «storageid», а не обязательно значением, хранящимся в переменной storageid. Немного сложно объяснить проблему из-за моего слабого понимания того, как работает локальное хранилище Chrome. Поэтому любая помощь будет принята с благодарностью.

Я не знаком с расширениями Chrome, но вы можете попробовать изменить chrome.storage.local.set({storageid: storage} ... на chrome.storage.local.set({[storageid]: storage} ...

Austin Ezell 29.05.2019 22:33

О, @AustinEzell Спасибо! Казалось, это помогло! Иногда я чувствую себя таким глупым. Можете ли вы написать это как ответ вместо комментария?

Yuumi 29.05.2019 22:36

Круто, я напишу быстрый ответ о том, почему это так.

Austin Ezell 29.05.2019 22:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы формируете свой объект JS, вы пишете {storageid: storage}. Это storageid здесь все еще просто строка "storageid". То, что вы ищете, - это значение самой переменной. {[storageid]: storage} интерпретирует переменную storageid в ее значение.

Не то чтобы это имело значение при создании плагина для Chrome, но я считаю, что стоит отметить, что это более современный синтаксис JS и он не будет работать в IE. Там решение все равно должно быть.

var storageObj = {}
storageObj[storageid] = storage

Другие вопросы по теме