javascript - React Firebase 读取元素
问题描述
我正在尝试获取存储在“Nombre”中的值,但它根本不起作用,我做错了什么吗?
class Appp extends React.Component {
constructor() {
super()
this.state = { name: 'hey' }
}
componentDidMount() {
const nameRef = firebase.database().ref().child('Anonimos').child('wx3czBh22dMQUTNDwD9l').child('Nombre')
nameRef.on('value', snapshot => {
this.setState({
name: snapshot.val()
})
})
}
render() {
return <h1>{this.state.name}</h1>
}
}
解决方案
您的代码使用 Firebase 实时数据库的 API。但屏幕截图显示了 Cloud Firestore 中的数据。虽然这两个数据库都是 Firebase 的一部分,但它们是完全独立的,其中一个的 API 无法访问另一个中的数据。
要访问 Cloud Firestore 中的数据,请遵循该数据库的文档: https: //firebase.google.com/docs/firestore/quickstart
就像是:
componentDidMount() {
const nameRef = firebase.firestore().collection('Anonimos').doc('wx3czBh22dMQUTNDwD9l')
nameRef.onSnapshot(doc => {
this.setState({
name: doc.data().Nombre
})
})
}
除了新语法之外,这里最大的变化是这段代码读取整个文档,而不仅仅是Nombre
字段,然后只设置状态中的名称。因此,虽然最终结果相同,但它加载的数据比您的实时数据库示例要多,因为该 API 允许加载任何节点,而 Cloud Firestore 始终加载完整的文档。
推荐阅读
- jupyter-notebook - 从 jupyter notebook 获取交互滑块以在 bokeh html 文件中工作
- linphone - 如何处理 linphone 中的 dtmf
- javascript - 如何检查哪个组件称为 primefaces remoteCommand?
- string - 当程序要求输入数字时,防止用户输入字母的最简单方法是什么?
- angular - 从 Angular 6 升级到 8 后,Angular 8 ng 服务未加载应用程序
- css - css变量中的计算不起作用
- scala - 广播不会输出 Akka Streams
- python - 为什么 BeautifulSoup 不返回子元素?
- node.js - 无法启动 React 项目
- python - 如何在我的 Django 应用程序中修复此属性错误?