snapshor.foreach()가 Firebase Cloud Firestore v9에서 호출되지 않습니다.
P粉041758700
P粉041758700 2024-01-29 14:39:08
0
1
553

값(타임스탬프)이 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();
      });
    });
  })

P粉041758700
P粉041758700

모든 응답(1)
P粉300541798

Cloud Firestore에서 각 필드 값 은 해당 값을 기준으로 인덱스에서 정렬 됩니다. 특히 숫자 값은 Timestamp 值。您对 where("Date", "<", cutoffTimestamp) 的查询将始终返回 0 个结果,因为它试图查找小于给定数字的 Timestamp 값보다 값 인덱스에서 먼저 정렬됩니다.

이 문제를 해결하려면 SDK에 의해 TimestampDate 值传递到 where() 过滤器。如果您选择使用 Date 자동으로 직렬화되는 개체를 Timestamp 개체 로 변환해야 합니다. 이를 통해 자신이 편안하다고 느끼는 것을 사용할 수 있습니다.

으아아아

또한 "입찰 1" 및 "입찰 2"를 녹음하는 대신 다음을 시도해 보세요.

으아아아
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿