這是某個用戶的firestore檔案:

這是我將如何保存要保存在 firestore 中的訊息:
const [msg, setMsg] = useState("");
const handleSubmit = (e) => {
e.preventDefault();
try {
const userRef = firestore.collection("users").doc(uid);
const ref = userRef.set(
{
msg,
},
{ merge: true }
);
console.log(" saved");
} catch (err) {
console.log(err);
}
};
return (
<div>
<form onSubmit={handleSubmit}>
<TextField
value={msg}
onChange={(e) => setMsg(e.target.value)}
/>
<Button type="submit">
Submit
</Button>
</form>
</div>
);
};
這樣,我可以將訊息保存在 firestore 中,但是,如果我再發送一條訊息,它將替換保存在其中的先前訊息。如何在firestore中保存一條訊息并保存另一條訊息而不影響上一條訊息?
uj5u.com熱心網友回復:
我了解您正在覆寫users集合中的同一檔案。這可能是(我們沒有看到整個代碼)因為您沒有更改uid兩次寫入之間的值。uid作為檔案 ID,它會被覆寫(即使您使用該{ merge: true }選項,如果msg物件包含現有欄位,它們也會被覆寫)。
您提到您保存訊息,所以我猜您想為給定用戶(此用戶由 標識uid)保存幾條訊息。因此,您可以在用戶的??檔案下創建一個子集合,并讓 Firestore 在您每次向該集合添加檔案時使用add()方法生成一個新的檔案 ID 。
大致如下:
const messagesCollection = firestore.collection("users").doc(uid).collection('messages');
const messagePayload = {foo: 'bar', bar: 'foo'};
messagesCollection.add({messagePayload});
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/359423.html
標籤:javascript 反应 火力基地 谷歌云firestore
