【发布时间】:2019-02-01 11:01:37
【问题描述】:
看来我可以通过以下方式从我的 Firebase 实时数据库中检索 所有我的数据:
let itemsRef = firebaseApp.database().ref('/');
itemsRef.on('value', (snapshot) => {
let data = snapshot.val();
let item = Object.values(data);
this.setState({item});
});
但是当我尝试使用特定参数而不是仅仅检索所有信息时,我总是会遇到这个错误:
@firebase/database: FIREBASE WARNING: 异常被用户回调抛出。
TypeError: 无法将 undefined 或 null 转换为对象
这就是我尝试查询信息的方式...完全按照文档进行操作,并且当我检索所有信息时我的代码可以正常工作,但当我所做的唯一更改是添加查询时却不行?
let itemsRef = firebaseApp.database().ref('/');
itemsRef.orderByChild('roundedBPM').equalTo('100').on('value', (snapshot) => {
let data = snapshot.val();
let item = Object.values(data);
this.setState({item});
});
是否有其他人在从 Firebase 查询时遇到问题,或者我做错了什么?
这就是我的数据在 Firebase 上的结构方式:
【问题讨论】:
-
所以你可能猜到的错误是因为 Object.values(data) 和 data 为空。问题是您在数据库中是否有具有指定查询参数的数据?在某处你试图查询不存在的东西。在继续之前,首先尝试 console.log 你的数据,看看你看到了什么。您也可以轻松使用 chrome 开发工具控制台
-
另外,也许添加您的数据结构,它可能会更好地了解您正在尝试做什么或问题。
-
另外,如果您是新手,我鼓励您也研究一下 Firestore,因为 Firestore 寻址的实时数据库存在限制。
-
@TheeBen 我编辑了我的问题并发布了我的 Firebase 数据结构的图像。我的数据库中确实有一些“roundedBPM”为 100 的歌曲,那么为什么数据为空?非常感谢!
标签: javascript firebase react-native firebase-realtime-database jsx