如何将数组中的JSON数据保存到Firestore

时间:2019-12-08 19:48:12

标签: javascript google-cloud-firestore

我正在尝试将JSON数据保存到Firestore。 数据如下:

System.Version

在下面将其保存到Firestore中不起作用,因为JSON数据存储在数组中

.MajorVersion

使用以下内容仅将第一个对象保存在JSON数据中。

.MinorVersion

将要保存的部分如下:

[{"back":"democracy","delayed_till":{"seconds":1574944200,"nanoseconds":0},"examples":[{"answer":"en Espana existe democracia desde 1975","example":"There is democracy in Spain since 1975"},{"answer":"Debemos luchar por nuestra democracia","example":"We must fight for our democracy"}],"front":"la democracia"},{"back":"habit, custom","delayed_till":{"seconds":1575148500,"nanoseconds":0},"front":"la costumbre"},{"back":"krokodil","delayed_till":{"seconds":1577831400,"nanoseconds":0},"front":"roos"},{"back":"krokodil","front":"blabla"},{"back":"bjkla","front":"blabla"}]

如何将全部数据保存在一个文档中?

编辑

这是创建JSON数据的方式:

db.collection('cardsb').add(object)

这是应该存储在FB中的方式:

enter image description here

这实际上是 存储的

enter image description here

1 个答案:

答案 0 :(得分:0)

据我所知,您只是将数据写入Firestore太早。处理完所有组后,才应该编写,然后将它们全部一次编写。

类似这样:

  const nbrGroups = this.cards.length
  var object = []; // Move this before the for loop
  for (let i = 0; i < nbrGroups; i++) {
    const nbrItems = this.cards[i].group.length
    for (let item = 0; item < nbrItems; item++) {
      var inputs = document.querySelectorAll('#' + this.cards[i].group_name.replace(/\s/g, '') + item + 'A #inFront, #' + this.cards[i].group_name.replace(/\s/g, '') + item + 'A #inBack, #' + this.cards[i].group_name.replace(/\s/g, '') + item + 'A #inAnswer, #' + this.cards[i].group_name.replace(/\s/g, '') + item + 'A #inExample')
      const examples = []
      if (inputs.length !== 2) {
        for (let i = 2; i < inputs.length; i++) {
          examples.push({ answer: inputs[i + 1].value, example: inputs[i].value })
          i++
        }
        object.push({
          back: inputs[1].value,
          delayed_till: this.cards[i].group[item].delayed_till,
          examples,
          front: inputs[0].value
        })
      } else {
        object.push({
          back: inputs[1].value,
          delayed_till: this.cards[i].group[item].delayed_till,
          front: inputs[0].value
        })
      }
    }
  }
  db.collection('cardsb').add(object[0]); // move this after the for loop