Javascript 数组键路径上的索引不';我找不到任何值

Javascript 数组键路径上的索引不';我找不到任何值,javascript,indexeddb,firefox-addon-webextensions,Javascript,Indexeddb,Firefox Addon Webextensions,我想熟悉indexedDB来构建我的Firefox WebExtension 我的示例数据的结构如下: const sampleDataRaw = [ { "ent_seq" : 1413190, "att1" : [ { "sub11" : "content1", "sub12" : [ "word" ] }, { "sub11" : "content2" } ], "at

我想熟悉indexedDB来构建我的Firefox WebExtension

我的示例数据的结构如下:

const sampleDataRaw = [ 
      {
      "ent_seq" : 1413190,
      "att1" : [ {
        "sub11" : "content1",
        "sub12" : [ "word" ]
      }, {
        "sub11" : "content2"
      } ],
      "att2" : [ {
        "sub21" : "other content",
        "sub22" : [ "term" ]
      } ]
    }, {
      "ent_seq" : 1000010,
      "att2" : [ {
        "sub21" : "more content"
      }, {
        "sub22" : "more words"
      } ]
    }
    ] // end sampleRawData
我已经打开/创建了我的数据库,添加了这个示例数据,并使用objectStore.get()和objectStore.openCursor()通过entseq键查询它

当我想使用我应该为这些字段创建的索引来搜索sub11或sub21字段时,问题就出现了,如下所示:

objectStore.createIndex("sub11Elements", "att1.sub11", { unique: false });
objectStore.createIndex("sub21Elements", "att2.sub21", { unique: false });
当我想要搜索时,比如说,字段sub11,如下所示:

var index = objectStore.index("sub11Elements");
index.get("content1").onsuccess = function(event) {
        // I should have the first object of my data now, alas the result is undefined instead
     };
它确实成功了,但是返回的值没有定义,因为get()实际上没有找到任何东西

我想知道它为什么找不到条目,以及如何让它找到条目。我想这可能是因为keypath错误,但是如上所述,如果我改为按键(entu seq)搜索,我可以成功地得到结果。att1[I]。sub11值

在mozilla的网站上,有一个声明,密钥可以是字符串和数组(或者数组中的数组等)类型,并且密钥路径部分应该用点连接起来。 通过在stackexchange上搜索,到目前为止,我发现密钥路径中不可能有可变密钥,但无论如何,这里不应该是这种情况。
因此,我真的不知道是什么原因导致搜索无法在数据库中找到对象

  • 看起来第二级对象是数组,而不是第一级对象的属性。
    访问器访问子属性,而不是数组的索引
  • IDBObjectStore.prototype.get
    在没有错误时总是产生成功,并且不指示是否找到匹配项

  • 关于第1点,再多说一点。看看
    “att1”:[{“sub11”:“content1”,“sub12”:[“word”]}…
    。假设这是一个实际的基本JavaScript对象。你能使用
    att1.sub11
    吗?不。因为
    att1
    的值是一个数组,而不是一个对象。

    我认为
    objectStore.createIndex(“sub11Elements”,“att1.sub11”,{unique:false})
    是指
    att1
    是数组而不是对象。请尝试使用
    att1[0]。sub11