首页 > 解决方案 > svelte - 使用带有 Each 函数的嵌套 json 数组

问题描述

我正在使用cordova-sqlite-porter将 SQLite 表导出到 JSON,然后使用使用 svelte 导出的 JSON。

我导出 json 的代码是:

 let myDB = '';
 let vetdrugs = [];
 myDB = window.sqlitePlugin.openDatabase({ name: "vetcalculators.db", iosDatabaseLocation: "Documents" });

 var successFn = function(json, count){
  vetdrugs = JSON.stringify(json);
};
cordova.plugins.sqlitePorter.exportDbToJson(myDB, {
successFn: successFn,
dataOnly:true,
tables:['vetADrugs']
});

生成的 JSON 是:

  {
  "data":{
  "inserts":{
     "vetADrugs":[
        {
           "drugradio":"single",
           "druglabel":"ml",
           "conc3":null,
           "Id":2,
           "dose":10,
           "conc1":null,
           "maximum":null,
           "desc":"",
           "title":"Test0",
           "notes":"",
           "minimum":null,
           "conc":100,
           "drugconc":"mg/ml",
           "conc2":null
        },
        {
           "drugradio":"single",
           "druglabel":"ml",
           "conc3":null,
           "Id":3,
           "dose":10,
           "conc1":null,
           "maximum":4,
           "desc":"",
           "title":"Test1",
           "notes":"",
           "minimum":2,
           "conc":100,
           "drugconc":"mg/ml",
           "conc2":null
        },
        {
           "drugradio":"single",
           "druglabel":"ml",
           "conc3":null,
           "Id":4,
           "dose":10,
           "conc1":null,
           "maximum":4,
           "desc":"",
           "title":"Test2",
           "notes":"",
           "minimum":2,
           "conc":100,
           "drugconc":"mg/ml",
           "conc2":null
        },
        {
           "drugradio":"single",
           "druglabel":"ml",
           "conc3":null,
           "Id":5,
           "dose":10,
           "conc1":null,
           "maximum":4,
           "desc":"",
           "title":"Test3",
           "notes":"",
           "minimum":2,
           "conc":100,
           "drugconc":"mg/ml",
           "conc2":null
        }
        ]
      }
   }
}

不幸的是,JSON 被导出为:

{
  "data":{
  "inserts":{
     "vetADrugs":[]...

而且我无法将其导出为:

{
"vetADrugs":[]...

通常,在 svelte 中,我会使用这样的 each 函数:

{#each vetADrugs as drugs}
{drugs.title}
{/each}

但我不确定如何将 JSON 的“数据”和“插入”部分合并到每个函数中。任何帮助,将不胜感激!

附录:我确实尝试了以下但没有运气:

{#each vetdrugs.data.inserts.vetADrugs as drug}
<p>
    {drug.title}
</p>
{/each}

标签: arraysjsonsqlitecordovasvelte

解决方案


您可以在每个块中使用点表示法。

{#each data.inserts.vetADrugs as drug}
    <p>
        {drug.title}
    </p>
{/each}

推荐阅读