我正在尝试将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中的方式:
这实际上是 存储的
答案 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