null 不是对象(正在计算 'snapshot.forEach')

null is not an object (evaluating 'snapshot.forEach')

我正在尝试订阅 firestore 上的查询,但在添加过滤器时出现错误。

这个很好用

  useEffect(() => {
    if (dbChats && currentUser?.uid) {
      const unsubscribe = dbChats
        .orderBy('createdAt')
        .limit(100)
        .onSnapshot((querySnapshot) => {
          const chats = firebaseLooper(querySnapshot);

          setChats(chats);
        });
      return unsubscribe;
    }
  }, [dbChats]);

但这不是

  useEffect(() => {
    if (dbChats && currentUser?.uid) {
      const unsubscribe = dbChats
        .where('participants', 'array-contains', currentUser.uid)
        .orderBy('createdAt')
        .limit(100)
        .onSnapshot((querySnapshot) => {
          const chats = firebaseLooper(querySnapshot);

          setChats(chats);
        });
      return unsubscribe;
    }
  }, [dbChats]);

每当我添加 where('participants', 'array-contains', currentUser.uid)

它抛出错误

null is not an object (evaluating 'snapshot.forEach')

请注意,这也有效

dbChats.where('participants', 'array-contains', currentUser.uid).get()

snapshot 为空,因为您没有提供任何错误处理并且查询抛出错误。只需提供一个错误处理程序作为 onSnapshot.

的第二个参数