我是新手,幾個月前才開始編碼。我正在創建一個使用 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 })
uj5u.com熱心網友回復:
要將陣列轉換為地圖,請嘗試使用reduce()如下所示:
const updatedMap = item.reduce((a, b) => {
a[b.Food] = b;
return a;
}, {})
await updateDoc(doc(db, "user", uid), { food: updatedMap })
這將使用食物名稱作為食物地圖中的鍵并將物件的測驗作為值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/449815.html
標籤:javascript 火力基地 反应式 谷歌云平台 google-cloud-firestore
