在 chrome.storage 中正确存储对象?
Properly storing an object in chrome.storage?
我正在尝试使用 chrome.storage 在我的 chrome 扩展中存储一个包含其他对象的对象 - 但在初始化它和使用 chrome.storage.sync 正确获取它时遇到问题。得到。我知道我应该以 chrome.storage.sync.get(key: "value", function(obj) {}
的形式获取对象 - 问题是我不确定如何
- 第一次用get初始化对象
- 使用 set
正确更新我的对象
我有以下代码来创建对象并添加我需要的数据。
allData = {};
currentData = {some: "data", goes: "here"};
allData[Object.keys(allData).length] = currentData;
这将正确地给我一个对象,它的第一个键 (0) 设置为 currentData。 (Object: {0: {some: "data", goes: "here"}})
按预期工作,allData[Object.keys(allData).length] = currentData;
稍后会将当时的任何 currentData 正确地推送到我的对象中。
但是我如何正确地将其永久存储在 chrome.storage 中? chrome.storage.sync.get("allData", function(datas) {})
无法创建一个空的 allData 变量,allData: {}
、allData = {}
以及 return undefined
或其他错误的各种不同的事情也是如此。如何正确初始化一个空对象并将其存储在 chrome.storage 中?还是我把这一切都搞错了,需要将它分解成关联数组才能工作?
我基本上需要将上面的一小段工作代码与 chrome.storage 一起永久存储,以便我可以根据需要使用它。
首先需要设置存储里面的数据:
allData = {};
currentData = {some: "data", goes: "here"};
// to initialize the all data using the storage
chrome.storage.sync.get('allData', function(data) {
// check if data exists.
if (data) {
allData = data;
} else {
allData[Object.keys(allData).length] = currentData;
}
});
// Save it using the Chrome extension storage API.
chrome.storage.sync.set({'allData': allData}, function() {
// Notify that we saved.
message('Settings saved');
});
之后您应该可以使用 chrome.storage.sync.get('allData', function(){ ... })
界面访问数据。
您可以使用新的 JavaScript (ECMAScript 6) 轻松做到这一点,查看 Enhanced Object Properties:
var currentData = {some: "data", goes: "here"};
chrome.storage.local.set({allData: currentData });
以前的方法是这样的:
var obj = {};
var key = "auth";
obj[key] += "auth";
obj[key] = JSON.stringify({someKey: someValue});
我正在尝试使用 chrome.storage 在我的 chrome 扩展中存储一个包含其他对象的对象 - 但在初始化它和使用 chrome.storage.sync 正确获取它时遇到问题。得到。我知道我应该以 chrome.storage.sync.get(key: "value", function(obj) {}
的形式获取对象 - 问题是我不确定如何
- 第一次用get初始化对象
- 使用 set 正确更新我的对象
我有以下代码来创建对象并添加我需要的数据。
allData = {};
currentData = {some: "data", goes: "here"};
allData[Object.keys(allData).length] = currentData;
这将正确地给我一个对象,它的第一个键 (0) 设置为 currentData。 (Object: {0: {some: "data", goes: "here"}})
按预期工作,allData[Object.keys(allData).length] = currentData;
稍后会将当时的任何 currentData 正确地推送到我的对象中。
但是我如何正确地将其永久存储在 chrome.storage 中? chrome.storage.sync.get("allData", function(datas) {})
无法创建一个空的 allData 变量,allData: {}
、allData = {}
以及 return undefined
或其他错误的各种不同的事情也是如此。如何正确初始化一个空对象并将其存储在 chrome.storage 中?还是我把这一切都搞错了,需要将它分解成关联数组才能工作?
我基本上需要将上面的一小段工作代码与 chrome.storage 一起永久存储,以便我可以根据需要使用它。
首先需要设置存储里面的数据:
allData = {};
currentData = {some: "data", goes: "here"};
// to initialize the all data using the storage
chrome.storage.sync.get('allData', function(data) {
// check if data exists.
if (data) {
allData = data;
} else {
allData[Object.keys(allData).length] = currentData;
}
});
// Save it using the Chrome extension storage API.
chrome.storage.sync.set({'allData': allData}, function() {
// Notify that we saved.
message('Settings saved');
});
之后您应该可以使用 chrome.storage.sync.get('allData', function(){ ... })
界面访问数据。
您可以使用新的 JavaScript (ECMAScript 6) 轻松做到这一点,查看 Enhanced Object Properties:
var currentData = {some: "data", goes: "here"};
chrome.storage.local.set({allData: currentData });
以前的方法是这样的:
var obj = {};
var key = "auth";
obj[key] += "auth";
obj[key] = JSON.stringify({someKey: someValue});