Firebase firestore 设置要记录的对象数组
Firebase firestore set array of objects to document
我需要为要 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 等
一个主要(负面)副作用是您需要预先知道所有字段名称才能阅读它们,而使用 "genuine" 数组字段,您可以循环遍历其值。
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'
}
};
来自 Official Documentation,这里是不同数据类型的示例代码:
let data = {
stringExample: 'Hello, World!',
booleanExample: true,
numberExample: 3.14159265,
dateExample: admin.firestore.Timestamp.fromDate(new Date('December 10, 1815')),
arrayExample: [5, true, 'hello'],
nullExample: null,
objectExample: {
a: 5,
b: true
}
};
您将需要以下内容来创建包含对象数组的对象
let object = {
user: 'mike',
userName: 'Mike nick',
urls: {
[{comment: 'BBBBB', imageUrl: 'url1'},
{comment: 'BBBJvuyiu', imageUrl: 'url2'},
{comment: 'AAAAA', imageUrl: 'url3'}]
},
date: 'March 20th'
};
让我知道这是否适合你。
我需要为要 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 等
一个主要(负面)副作用是您需要预先知道所有字段名称才能阅读它们,而使用 "genuine" 数组字段,您可以循环遍历其值。
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'
}
};
来自 Official Documentation,这里是不同数据类型的示例代码:
let data = {
stringExample: 'Hello, World!',
booleanExample: true,
numberExample: 3.14159265,
dateExample: admin.firestore.Timestamp.fromDate(new Date('December 10, 1815')),
arrayExample: [5, true, 'hello'],
nullExample: null,
objectExample: {
a: 5,
b: true
}
};
您将需要以下内容来创建包含对象数组的对象
let object = {
user: 'mike',
userName: 'Mike nick',
urls: {
[{comment: 'BBBBB', imageUrl: 'url1'},
{comment: 'BBBJvuyiu', imageUrl: 'url2'},
{comment: 'AAAAA', imageUrl: 'url3'}]
},
date: 'March 20th'
};
让我知道这是否适合你。