Javascript 超过2个where子句的Firestore查询不返回任何文档

Javascript 超过2个where子句的Firestore查询不返回任何文档,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我正在使用下面的查询 // get all events useEffect(() => { const currentDate = new Date(); const listEvents = () => { try { return ( firestore() .collection('events') .where('status', '==', 'Activ

我正在使用下面的查询

 // get all events
  useEffect(() => {
    const currentDate = new Date();

    const listEvents = () => {
      try {
        return (
          firestore()
            .collection('events')
            .where('status', '==', 'Active')
            .where('propertyId', 'in', [user.propertyId, 'All'])
            .where('eventFromDateTime', '>=', currentDate)
            // .orderBy('eventFromDateTime', 'desc')
            .onSnapshot((querySnapshot) => {
              const _events = [];

              if (querySnapshot) {
                querySnapshot.forEach((documentSnapshot) => {
                  const event = documentSnapshot.data();
                  const fromEventDateTime = event.eventFromDateTime
                    ? moment(event.eventFromDateTime.toMillis())
                    : null;
                  const toEventDateTime = event.eventToDateTime
                    ? moment(event.eventToDateTime.toMillis())
                    : null;
                  const eventDate = fromEventDateTime.format('YYYY-MM-DD');

                  const eventFromDateTime = fromEventDateTime.format(
                    timeFormat,
                  );
                  const eventToDateTime = toEventDateTime.format(timeFormat);

                  _events.push({
                    ...documentSnapshot.data(),
                    category: event.category || null,
                    eventDate: eventDate,
                    title: event.title,
                    description: event.description,
                    status: event.status,
                    eventFromDateTime: eventFromDateTime,
                    eventToDateTime: eventToDateTime,
                    totalRegister: event.totalRegister || null,
                    totalWaiting: event.totalWaiting || null,
                    updatedAt: documentSnapshot.data().updatedAt.toMillis(),
                  });
                });
              }

              setEvents(_events);
              setIsLoading(false);
            })
        );
      } catch (error) {
        console.log(error);
        setError(error.message);
      }
    };

    if (user && user.propertyId) {
      return listEvents();
    }
  }, [user]);
控制台中没有返回错误。log

我刚刚注意到,它先返回了2个文档,然后看起来像是第二次调用,没有返回任何文档

如果我注释
.where('eventFromDateTime','>=',currentDate)
,则只有它返回文档

以下是我的数据库中数据的外观:

你能告诉我这个问题出了什么问题吗


谢谢
const currentDate=new Date()的格式
与保存在
eventFromDateTime
中的字符串不同。这意味着where条件将无法正常工作


currentDate
是一个对象,
eventFromDateTime
是一个字符串

您的代码似乎没有任何错误处理。请执行此操作,并查看错误消息的内容。此外,我们无法看到数据库中的数据,因此我们无法知道此查询是否应该返回任何内容。如果快照处理程序中的结果明显为0,则应编辑问题以显示应返回的实际文档的示例。还要注意的是,我们也看不到
user.propertyId
是什么-硬编码所有内容,因此这里没有未知内容。感谢Doug的快速响应。我补充了更多细节。如果您需要更多信息,请告诉我。我们仍然无法在您的数据库中看到实际数据,因此我们不知道此查询将如何处理这些数据。正如我之前所建议的,您应该显示与您的查询匹配但不在查询结果中的文档示例。我已上传数据截图。eventFromDatetime和eventToDateTime是时间戳值SeventFromDateTime和eventToDateTime是时间戳值firebase中的时间戳与
new Date()
-它需要转换
firebase.firestore.timestamp.fromDate(new Date())我尝试了const currentDate=firestore.Timestamp.fromDate(new Date());仍然有同样的问题这是不准确的-您可以在查询中传递日期对象。为了查询时间戳类型字段,它们将自动转换为时间戳类型对象。这里讨论的字段实际上是时间戳字段,而不是格式化字符串。