作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 JSON 数据保存到 Firestore。数据如下:
[{"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"}]
下面将其保存到 Firestore 不起作用,因为 JSON 数据存储在数组中
db.collection('cardsb').add(object)
使用以下命令仅保存 JSON 数据中的第一个对象。
db.collection('cardsb').add(object[0])
将保存的部分如下:
{"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"}
如何将所有数据保存在一个文档中?
编辑
这就是 JSON 数据的创建方式:
cons () {
const nbrGroups = this.cards.length
for (let i = 0; i < nbrGroups; i++) {
var object = []
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
})
}
}
console.log(JSON.stringify(object))
console.log(JSON.stringify(object) === JSON.stringify(this.cards[i].group))
console.log(JSON.stringify(this.cards[i].group))
console.log(JSON.stringify(this.cards[i].id))
db.collection('cardsb').add(object[0])
}
这就是它应该在 FB 中的存储方式:
这就是实际存储的内容
最佳答案
只需在发送之前对 JSON 进行字符串化,它将作为字符串存储在 firestore 中,当您需要检索它时,只需解析它即可。
示例。
const jsonArray = JSON.stringify({
foo: bar,
sam: mas,
hello: "world",
createdAt: Date.now()
})
await firebase.firestore()
.collection('COLLECTION_NAME')
.doc("DOC_ID")
.update({
arrayField: firebase.firestore.FieldValue.arrayUnion(jsonArray)
})
.then(async (resp) => { })
.catch((error) => {
console.log(error.code)
});
这样您就可以将 json 数据保存为 firestore 中数组字段内的字符串
当您需要取回它时,您所要做的就是使用 JSON.parse
JSON.parse(fieldName)
您的数据将像这张图片一样存储
关于javascript - 如何将数组中的 JSON 数据保存到 Firestore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59239278/
我是一名优秀的程序员,十分优秀!