【问题标题】:svelte - using a nested json array with an Each functionsvelte - 使用带有 Each 函数的嵌套 json 数组
【发布时间】:2021-10-10 21:25:50
【问题描述】:

我正在使用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}

【问题讨论】:

  • 你尝试了什么just work。请确保 vetdrugs 变量是预期的 JSON 对象。

标签: arrays json sqlite cordova svelte


【解决方案1】:

您可以在每个块中使用点符号。

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

【讨论】:

  • 我忘了说我试过了,但没有运气。它失败并出现错误Unhandled Promise Rejection: ReferenceError: Can't find variable: data 由于我的 json 存储在“vetdrugs”中,即let vetdrugs = JSON.stringify(json);,我尝试了 {#each vetdrugs.data.inserts.vetADrugs as drug}。 JSON 中包含的“数据”令人困惑。
  • 你为什么使用 JSON.stringify?这会将 JS 对象转换为 JSON 字符串,如果您希望发生相反的情况,请尝试 JSON.parse(json)。
  • 除了我遵循与 sqlite-porter 一起使用的代码示例之外,没有其他原因
猜你喜欢
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 2018-01-07
  • 2019-11-27
  • 1970-01-01
  • 2011-09-04
  • 1970-01-01
  • 2013-10-24
相关资源
最近更新 更多