javascript - 无法将 Firebase 数据库引入应用程序。无法访问 Cloud Firestore 后端。后端在 10 秒内没有响应
问题描述
编辑 - 问题已修复
最后,在收到支持的样本和意见后,经过无数次的测试,我决定取消这个项目,重新开始。我无法说出或解释我做错了什么或如何纠正问题,我只是从头开始了一个项目,一切正常。
我必须说我已经完成了以下问题中显示的所有操作,但无法将数据库中的数据带到我的应用程序中:
@firebase/firestore:Firestore (5.0.4):无法访问 Cloud Firestore 后端。后端在 10 秒内没有响应
React Native 无法访问 Cloud Firestore 后端
模拟 firstore:Firestore (8.5.0):无法访问 Cloud Firestore 后端
我更改了 Firebase 的版本,添加了适用于其他人的代码,我在 GitHub 上寻找解决方案等。我也在这个站点上寻找解决方案,但我无法连接。
我的 React Native App 使用了 Firebase。我正在尝试将 Firestore 数据库加入我的应用程序,但没有成功。到目前为止,该应用程序有一个数据库中的产品列表,手动输入,来自一个 Web 应用程序,该应用程序完美连接到 Firebase 数据库制作调试器,我检查修复是否到达我,感谢 console.log,但它是空的,在数据库中我手动输入了几个元素。
我显示来自 console.log 的图像
我总是得到同样的警告:
> @ firebase / firestore: Firestore (7.19.0): Could not reach Cloud
> Firestore backend. Backend didn't respond within 10 seconds. This
> typically indicates that your device does not have a healthy Internet
> connection at the moment. The client will operate in offline mode
> until it is able to successfully connect to the backend
他们已经是 10 天的测试解决方案。我已经更改了 Firebase 的版本,我添加了适用于其他人的代码,我已经在 GitHub 上寻找答案等。我还在这个网站上寻找了解决方案,但我无法连接。
如果我无法从数据库中获取数据,我将无法继续使用我的应用程序
我显示图像和代码
import app from 'firebase/app'
import 'firebase/firestore'
import firebaseConfig from './config'
class Firebase {
/*constructor() {
if(!app.apps.length) {
app.initializeApp(firebaseConfig)
}
this.db = app.firestore()
}*/
constructor() {
if (!app.apps.length) {
app.initializeApp(firebaseConfig)
app.firestore().settings({ experimentalForceLongPolling: true })
}
this.db = app.firestore()
}
}
const firebase = new Firebase()
export default firebase
文件菜单.js
import React, { useContext, useEffect, Fragment } from 'react'
import { StyleSheet } from 'react-native'
import {
Container,
Separator,
Content,
List,
ListItem,
Thumbnail,
Text,
Body
} from 'native-base'
import globalStyles from '../styles/global'
import FirebaseContext from '../context/firebase/firebaseContext'
const Menu = () => {
// Context de Firebase
const { menu, obtenerProductos } = useContext(FirebaseContext)
useEffect(() => {
obtenerProductos()
console.log(menu)
}, [])
return (
<Container style={globalStyles.contenedor}>
<Content style={{ backgroundColor: '#FFF' }}>
<List>
{menu.map(plato => {
const { imagen, nombre, descripcion, categoria, precio, id } = plato
return (
<Fragment key={id}>
<ListItem
>
<Body>
<Text>{nombre}</Text>
</Body>
</ListItem>
</Fragment>
)
})}
</List>
</Content>
</Container>
)
}
const styles = StyleSheet.create({
separador: {
backgroundColor: '#000',
},
separadorTexto: {
color: '#FFDA00',
fontWeight: 'bold',
textTransform: 'uppercase'
}
})
export default Menu
文件 NuevaOrden.js
import React from 'react'
import { View, StyleSheet } from 'react-native'
import { Container, Button, Text, NativeBaseProvider } from 'native-base'
import globalStyles from '../styles/global'
import { useNavigation } from '@react-navigation/native'
const NuevaOrden = () => {
const navigation = useNavigation()
return (
<Container style={globalStyles.contenedor}>
<View style={[globalStyles.contenido, styles.contenido]}>
<Button
style={globalStyles.boton}
rounded
block
onPress={() => navigation.navigate('Menu')}
>
<Text style={globalStyles.botonTexto} >Crear Nueva Orden</Text>
</Button>
</View>
</Container>
)
}
const styles = StyleSheet.create({
contenido: {
flexDirection: 'column',
justifyContent: 'center'
}
})
export default NuevaOrden
文件 firebaseState.js
import React, { useReducer } from 'react'
import firebase from '../../firebase'
import FirebaseReducer from './firebaseReducer'
import FirebaseContext from './firebaseContext'
import { OBTENER_PRODUCTOS_EXITO } from '../../types'
const FirebaseState = props => {
// Crear state inicial
const initialState = {
menu: []
}
// useReducer con dispatch para ejecutar las funciones
const [state, dispatch] = useReducer(FirebaseReducer, initialState)
// Función que se ejecuta para traer los productos
const obtenerProductos = () => {
// consultar firebase
//firebase.db.settings({ experimentalForceLongPolling: true })
firebase.db
.collection('productos')
.where('existencia', '==', true) // traer solo los que esten en existencia
.onSnapshot(manejarSnapshot)
function manejarSnapshot(snapshot) {
let platos = snapshot.docs.map(doc => {
return {
id: doc.id,
...doc.data()
}
})
console.log(platos)
// Tenemos resultados de la base de datos
dispatch({
type: OBTENER_PRODUCTOS_EXITO,
payload: platos
})
}
}
return (
<FirebaseContext.Provider
value={{
menu: state.menu,
firebase,
obtenerProductos
}}
>
{props.children}
</FirebaseContext.Provider>
)
}
export default FirebaseState
在此处输入图像描述
解决方案
推荐阅读
- python - Python selenium 如何保持浏览器打开?
- javascript - 如何使用javascript显示文件下载进度?
- r - 如何获取形状点的栅格行和列位置?
- javascript - 使用添加操作设置交集
- android - Firebase FireStore @ Android - 离线优先的最佳实践
- android-studio - android studio 中的 OCR 应用程序(希腊字符)
- perl - 使用 Gtk2::EntryCompletion 和 Gtk2::SimpleList
- python - 在pyqt5中单击登录按钮时获取小部件未定义错误
- fiware - Fiware Orion 代理和数据库连接
- javascript - 使用 ajax 和 django 框架重新加载 div 并显示 json