我正在使用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
答案 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)
我认为在这种情况下需要考虑一些重要的事情。