Place an Object within Object within Chrome chrome.storage.sync.set for Data Set

Place an Object within Object within Chrome chrome.storage.sync.set for Data Set

如何在 chrome.storage.sync.set

内的对象中放置对象

我需要的结果是,这样我就可以搜索值,然后提取名称和路径等数据

0:ID {
Name: Name of file
Path: Path Location
Enabled: true
}
1:ID{
Name: Name of file
Path: Path Location
Enabled: true
}
2:ID{
Name: Name of file
Path: Path Location
Enabled: true
}

我用过

var save = {};
save.id = {};
save.id.name = "Name of File";
save.id.path = "Path of File";
save.id.enable = "1";

chrome.storage.sync.set(save, function() {
        console.log('Value is set to ' + save);
});

chrome.storage.sync.get(['save'], function(result) {
       console.log('Value currently is ' + result.value);
});

但它不起作用,我如何能够搜索 ID,然后从该 ID 中提取相关数据?

您输入的密钥是 'id',而不是 'save'。变量的名称对 API 无关紧要(它甚至无法知道)。重要的是变量的内容:它应该是一个对象,其中每个 属性 名称将是存储中的一个键,每个 属性 值将是该键下写入的内容。

这意味着您可以一次写入多个密钥:{key1: value1, key2: value2}

// two separate entries will be written to the storage
chrome.storage.sync.set({
  id: {name: 'foo', path: 'bar', etc: ''},
  herp: 'derp',
}, () => {
  console.log('Value is set');
});

这也意味着您应该阅读 'id',并且结果变量将包含 id 作为 属性 例如result.id,不只是一些抽象的 result.value.

您还可以读取多个键:['key1', 'key2'] 将生成一个具有两个属性 {key1: value1, key2: value2} 的变量,每个属性可访问为 result.key1result.key2

chrome.storage.sync.get(['id', 'herp'], result => {
  console.log('Got data:', result, 'id:', result.id, 'herp:', result.herp);
});

并且不要在 console.log 中使用 + 因为它不会序列化对象的内容,而是使用 ,.

另请参阅:

  • How to inspect chrome.storage.
  • How to use a variable for a key in a JavaScript object literal?