更新 firestore 中的地图字段
Updating a map field in firestore
我是新手,几个月前才开始编码。我正在创建一个带有 expo 本地反应的应用程序,但我无法将地图字段更新到文档中。到目前为止,当我需要更新一个文件(例如一个名字)时,我正在做以下事情:
const updateData = async () => {
await updateDoc(doc(db,"users",uid),{
name:name,
age: age,
})
问题是我现在有一个按以下方式存储数据的映射字段:
我设置应用程序的方式是,我有一个食物数组:
const [item, setItem] = useState([
{Food: 'tomato', Calories: 20, Quantity: 1,},
{Food: 'lettuce', Calories: 10, Quantity: 1,},
]);
我想将其存储到 firestore 文档中的地图字段中。
我以为我可以使用 for 循环,这样我就可以将数组元素的每个字段填充到映射中,但我似乎无法在 await 中使用循环。
在这种情况下,我可以使用类似的解决方法吗?
以红色突出显示的 for 循环:
await updateDoc(doc(db,"user",uid),{
for (let i = 0; i < item.length; i++) {
}
},
{ merge: true })
要将数组转换为映射,请尝试使用 reduce()
,如下所示:
const updatedMap = item.reduce((a, b) => {
a[b.Food] = b;
return a;
}, {})
await updateDoc(doc(db, "user", uid), { food: updatedMap })
这将使用食物名称作为食物地图中的键,并将对象测试作为值。
我是新手,几个月前才开始编码。我正在创建一个带有 expo 本地反应的应用程序,但我无法将地图字段更新到文档中。到目前为止,当我需要更新一个文件(例如一个名字)时,我正在做以下事情:
const updateData = async () => {
await updateDoc(doc(db,"users",uid),{
name:name,
age: age,
})
问题是我现在有一个按以下方式存储数据的映射字段:
我设置应用程序的方式是,我有一个食物数组:
const [item, setItem] = useState([
{Food: 'tomato', Calories: 20, Quantity: 1,},
{Food: 'lettuce', Calories: 10, Quantity: 1,},
]);
我想将其存储到 firestore 文档中的地图字段中。
我以为我可以使用 for 循环,这样我就可以将数组元素的每个字段填充到映射中,但我似乎无法在 await 中使用循环。
在这种情况下,我可以使用类似的解决方法吗?
以红色突出显示的 for 循环:
await updateDoc(doc(db,"user",uid),{
for (let i = 0; i < item.length; i++) {
}
},
{ merge: true })
要将数组转换为映射,请尝试使用 reduce()
,如下所示:
const updatedMap = item.reduce((a, b) => {
a[b.Food] = b;
return a;
}, {})
await updateDoc(doc(db, "user", uid), { food: updatedMap })
这将使用食物名称作为食物地图中的键,并将对象测试作为值。