首页 > 解决方案 > null 不是对象(评估 '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()

标签: firebasereact-nativereact-native-firebase

解决方案


snapshotnull 因为您没有提供任何错误处理并且查询抛出错误。只需将错误处理程序作为第二个参数提供给onSnapshot.


推荐阅读