【问题标题】:TypeError: null is not an object (evaluating 't.forEach') Firebase React NativeTypeError:null 不是对象(评估't.forEach')Firebase React Native
【发布时间】:2021-02-07 14:41:47
【问题描述】:

我的应用程序运行正常,令我惊讶的是,经过一些更新后,系统停止工作。 当应用程序尝试查询数据库中的某些数据时,它会显示以下错误。

com.facebook.react.common.JavascriptException: TypeError: null is not an object (evaluating 't.forEach'), stack:
<unknown>@736:531
<unknown>@787:4798
value@47:1279
<unknown>@758:1112
value@47:1279
<unknown>@768:1597
value@47:1279
value@27:3544
<unknown>@27:840
value@27:2798
value@27:812
value@-1

    at com.facebook.react.modules.core.ExceptionsManagerModule.reportException(ExceptionsManagerModule.java:79)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)
    at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:151)
    at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
    at android.os.Handler.handleCallback(Handler.java:883)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:27)
    at android.os.Looper.loop(Looper.java:224)
    at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:226)
    at java.lang.Thread.run(Thread.java:919)

按照代码进行分析,注意到没有变化,我做了几次搜索,但没有成功。

代码 *****

import React, { useState, useEffect } from 'react';
import {
  Container, Title, Form, Input, Submit, List, Name, Header, BackButton,
  ContainerList, Stats, Buttons, Conferencia, NameList, Edit, EditName,
} from './styles';
import { Image, ActivityIndicator } from 'react-native';
import Icon from 'react-native-vector-icons/MaterialIcons';
Icon.loadFont();
import logoImg from '../../assets/darmand.png';
import { useNavigation } from '@react-navigation/native';
import firestore from '@react-native-firebase/firestore';

export default function Lists() {
  const navigation = useNavigation();

  const [loading, setLoading] = useState(true);
  const [lists, setLists] = useState([]);
  const [search, setSearch] = useState('');
  const [filteredList, setFilteredList] = useState([]);

  function navigateToListProduts(list, name, user, date) {
    navigation.navigate('ListProducts', { list, name, user, date });
  }

  function navigateToProdutsAdd() {
    navigation.navigate('ListAdd');
  }

  //COMO CONSULTAR OS DADOS DE UMA SUBCOLEÇÃO. EXEMPLO ABAIXO:

  //.collection('Lists').doc('LOJA-MAO1').collection('LOJA-MAO1')
  useEffect(() => {


    const subscriber = firestore()
      .collection('Lists')
      .onSnapshot(querySnapshot => {
        const lists = [];


        querySnapshot.forEach(documentSnapshot => {
          lists.push({
            ...documentSnapshot.data(),
            key: documentSnapshot.id,
          });
        });
        

        setLists(lists);
        setLoading(false);
      });

      setFilteredList(
        lists.filter(list => {
          return list.name.includes(search)
        })
      )

    // Unsubscribe from events when no longer in use
    return () => subscriber();
  }, [search, lists]);

  if (loading) {
    return <ActivityIndicator />
  }

【问题讨论】:

  • 你更新了什么?
  • 我找到了错误的原因。 Firebase 权限已放宽。

标签: javascript firebase react-native


【解决方案1】:

您可以更改您的 Firestore 规则

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 2021-06-22
    • 2020-04-15
    • 1970-01-01
    • 2021-01-13
    • 2020-11-21
    • 2021-05-27
    相关资源
    最近更新 更多