我在 Firestore 中有這個資料結構:

預期輸出:我只會更新array[1]which is M。
它目前所做的事情:它不僅更新了. 檔案array[1] ,還添加了另一個資料 array。因此,它不再只有索引0,1,2,而是變成了0,1,2,3
const [category, setCategory] = useState([]);
//useEffect to get all of the categories
const [options, setOptions] = useState([]);
const [edit, setEdit] = useState();
const handleSubmit = async (e) => {
e.preventDefault();
const ref = doc(db, "category", state);
await updateDoc(ref, {
category: edit,
options: arrayUnion(options),
});
console.log("updated")
};
形式:
{category &&
category.map((category, index) => (
<form onSubmit={handleSubmit}>
<TextField
defaultValue={category.cat}
type="text"
value={categoryEdit}
fullWidth
onChange={(e) => setCategoryEdit(e.target.value)}
/>
{category.options.map((i) => (
<TextField
type="text"
defaultValue={i}
variant="outlined"
fullWidth
value={options[i]}
onChange={(e) => setOptions(e.target.value)}
/>
))}
</>
)}
<Button type="submit">Submit</Button>
</form>
))}
uj5u.com熱心網友回復:
無法使用任何一種方式更新陣列欄位中的專案arrayUnion。你必須:
- 將檔案讀入您的應用程式
- 獲取完整的陣列
- 更新陣列中的一項
- 將整個陣列寫回檔案
另見:
- Firestore 更新陣列欄位中的單個專案
- Cloud firestore:使用點表示法更新嵌套陣列物件中的欄位值
- 如何更新firestore中陣列內的物件?
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/428954.html
標籤:javascript 反应 火力基地 谷歌云火库
