값(타임스탬프)이 2시간이 지난 문서를 삭제하려고 합니다. onSnapshot() 을 호출해야 하지만 snapshot.foreach() 는 호출하지 않습니다. console.log를 통해 확인하면 Called1은 콘솔에 표시되지만 Called2는 표시되지 않습니다. 문서를 삭제하라는 호출이 왜 호출되지 않는지 궁금합니다.
onMounted(() => { const itemsCollectionRef = collection(db, "Bookings"); const cutoffTimestamp = Date.now() - 2 * 60 * 60 * 1000; // Two hours ago const oldItemsQuery = query( itemsCollectionRef, where("Date", "<", cutoffTimestamp) ); onSnapshot(oldItemsQuery, (snapshot) => { console.log('called1'); snapshot.forEach((doc) => { // Delete the document console.log('called2'); db.collection("Bookings").doc(doc.id).delete(); }); }); })
Cloud Firestore에서 각 필드 값 은 해당 값을 기준으로 인덱스에서 정렬 됩니다. 특히 숫자 값은
Timestamp
值。您对where("Date", "<", cutoffTimestamp)
的查询将始终返回 0 个结果,因为它试图查找小于给定数字的Timestamp
값보다 값 인덱스에서 먼저 정렬됩니다.이 문제를 해결하려면 SDK에 의해
으아아아Timestamp
或Date
值传递到where()
过滤器。如果您选择使用Date
자동으로 직렬화되는 개체를 Timestamp 개체 로 변환해야 합니다. 이를 통해 자신이 편안하다고 느끼는 것을 사용할 수 있습니다.또한 "입찰 1" 및 "입찰 2"를 녹음하는 대신 다음을 시도해 보세요.
으아아아