FirebaseError:由于客户端处于脱机状态而无法获取文档

时间:2020-06-09 04:31:31

标签: reactjs firebase google-cloud-firestore react-hooks

我正在使用React 16.13.1

我正在尝试从“列表”集合中获取文档。 如果我注释掉第15至24行而取消注释第25行,它将起作用。

但是,由于我正在收到此错误: “ FirebaseError:由于客户端脱机而无法获取文档。”

第24行传递给getDoc()的参数与第25行相同。

有人知道为什么会发生这种情况以及使用第18行时如何使getDoc()函数正常工作吗?

更新:我注意到我可以无错误地调用数据库,但是只有在登录后,我才会收到错误消息“ FirebaseError:由于客户端离线而无法获取文档”

1.   import React, { useState, useEffect } from 'react'
2.   import { Redirect } from 'react-router-dom'
3.   import Firebase from '../../services/Firebase/firebase'
4.   import useStyles from './styles.js'
5.
6.   const Login = ({ currentUser, setCurrentUser }) => {
7.   const [username, setUsername] = useState('')
8.   const [password, setPassword] = useState('')
9.   const [error, setError] = useState(null)
10.
11.  const classes = useStyles()
12.
13.  const handleForm = async e => {
14.    e.preventDefault()
15.    let email = username + '@site.com'
16.    let document
17.    try {
18.      document = await Firebase.doSignInWithEmailAndPassword(email, password)
19.    } catch (err) {
20.      setError('Sorry, there was an issue with your account. Please try again later.')
21.    }
22.    const { user } = document
23.    console.log(user.uid)
24.    getDoc(user.uid)
25.    // getDoc('GeAT8UytRYSax49VNwSYAzFrp7t1')
26.  }
27.
28.  const getDoc = async (uid) => {
29.    try {
30.      const list = await Firebase.database.collection('List').doc(uid).get()
31.      console.log(list)
32.    } catch(err){
33.      console.log(err)
34.    }
35.  }
36.
37.  return (
38.    <>
39.    {/* Some HTML */}
40.    </>
41.  )
42.  }
43.
44.  export default Login

3 个答案:

答案 0 :(得分:5)

每当在开发人员模式下以chrome打开我的控制台时,我都会遇到相同的问题。自更新为 firebase 7.15.1 以来,我还没有这个问题。

答案 1 :(得分:0)

我认为您需要等待文档

13.  const handleForm = async e => {
14.    e.preventDefault()
15.    let email = username + '@site.com'
16.    let document
17.    try {
18.      document = await Firebase.doSignInWithEmailAndPassword(email, password)
19.    } catch (err) {
20.      setError('Sorry, there was an issue with your account. Please try again later.')
21.    }

22.    if (document) {
23.      getDoc(user.uid)
24.    }

26.  }

答案 2 :(得分:0)

我认为在这种情况下需要考虑一些重要的事情。

  1. 确保您的互联网连接良好。客户可能认为它在线。
  2. 您可能试图引用尚未创建的集合/文档。因此,您可以使用虚拟文档创建集合,也可以等待文档创建。
  3. 即使您可以尝试一些简单的操作,例如重新启动Web浏览器。