我需要为要 firestore 的对象设置一个数组,但仅存储 url 的第一个索引。任何正确方向的帮助都会有所帮助,谢谢。
代码:
const object = [
{
user: 'mike',
userName: 'Mike nick',
Urls:[
{comment: "BBBBB", imageUrl: "url1"},
{comment: "BBBJvuyiu", imageUrl: "url2"},
{comment: "AAAAA", imageUrl: "url3"},
],
date: 'March 20th'
}
]
firestoreRef
.collection('users')
.doc(userId)
.collection('images')
.doc('customers')
.collection('customerExperience')
.doc(userId)
.set(object, { merge: true })
需要此结构,因为用户可能会继续添加更多数据:
最佳答案
你的 const object
实际上是一个数组,而它应该是一个对象(不是一个数组)。
以下应该有效:
const object = {
user: 'mike',
userName: 'Mike nick',
urls: [
{ comment: 'BBBBB', imageUrl: 'url1' },
{ comment: 'BBBJvuyiu', imageUrl: 'url2' },
{ comment: 'AAAAA', imageUrl: 'url3' }
],
date: 'March 20th'
};
<小时/>
注意与您的对象的区别:
const object = [
{
.....
}
]
<小时/>
更新您的评论:
如果您希望完全按照更新问题中显示的方式保存它,请执行以下操作。但我不确定这是保存数据的最佳方法:事实上,您没有创建数组,而是创建了几个“map”类型的字段,其名称如下:0、1 等。
主要(负面)副作用之一是您需要预先知道所有字段名称才能读取它们,而使用“真正的”数组字段,您可以循环遍历其值。
const object = {
0: {
user: 'mike1',
userName: 'Mike nick',
urls: [
{ comment: 'BBBBB', imageUrl: 'url1' },
{ comment: 'BBBJvuyiu', imageUrl: 'url2' },
{ comment: 'AAAAA', imageUrl: 'url3' }
],
date: 'March 20th'
},
1: {
user: 'mike2',
userName: 'Mike nick',
urls: [
{ comment: 'BBBBB', imageUrl: 'url1' },
{ comment: 'BBBJvuyiu', imageUrl: 'url2' },
{ comment: 'AAAAA', imageUrl: 'url3' }
],
date: 'March 20th'
}
};
关于javascript - Firebase firestore 设置要记录的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58189652/