В коллекции orders
я создал документ с именем counts
, в котором будут храниться счетчики статуса заказов:
Затем я создал функцию для увеличения статуса с помощью «доставлено».
async function updateData() {
const docRef = doc(db, "orders", "count");
await updateDoc(docRef, {
[`deliveredOrders`]: increment(1),
});
}
А затем, чтобы отобразить это:
useEffect(async () => {
const docRef = doc(db, "orders", "counts");
const docSnap = await getDoc(docRef);
if (docSnap.exists()) {
console.info("Document data:", docSnap.data());
} else {
// doc.data() will be undefined in this case
console.info("No such document!");
}
}, []);
Да, это один из способов сделать это, я полагаю, «дорогой», это зависит от вас и от того, сколько звонков вы можете получить, поскольку я знаю, что в Firestore есть ограниченное количество бесплатных звонков для документов.
Другое дело, что вы не должны, и я повторяю, не должны делать useEffect асинхронным, лучшим и правильным способом выполнения асинхронного кода внутри useEffect было бы объявить его внутри, а затем запустить, как показано ниже.
useEffect(() => {
const AsyncExample = async () => {
// async code in here
}
AsyncExample()
}, [])