javascript - 从firebase检索值时接收未定义
问题描述
我的电话哪里错了?第一个console.log 指向角色对象,第二个console.log 指向未定义。什么时候应该是用户。
componentDidMount(){
let user = fire.auth().currentUser;
let db = fire.database();
let roleRef = db.ref('/roles');
roleRef.orderByChild('user').equalTo(user.uid).once('value', (snapshot) => {
console.log(snapshot.val())
console.log(snapshot.val().user);
})
}
结果:
火力基地:
解决方案
当您对 Firebase 数据库执行查询时,可能会有多个结果。所以快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。
您的代码没有考虑该列表。最简单的方法是使用Snapshot.forEach()
:
roleRef.orderByChild('user').equalTo(user.uid).once('value', (snapshot) => {
snapshof.forEach((roleSnapshot) => {
console.log(roleSnapshot.val())
console.log(roleSnapshot.val().user);
});
})
推荐阅读
- jenkins - 如何将自定义网址从詹金斯发送到电子邮件?
- ios - 将转移的 iOS 应用程序更新到另一个开发者帐户
- arrays - 如何存储全局数组
- android - 使用“FirebaseAuth.getInstance().signInWithEmailAndPassword”时如何在firebase中使用字符串数组?
- redux-form - Redux-Form 多于一个 Field 不会提交
- c# - 网格视图中的链接按钮:第一次单击时事件不会触发。第二次点击工作正常
- java - 如何计算此解决方案的时间和空间复杂度?
- mongodb - Spring Boot 连接到运行的 mongo 容器的 MongoDB 副本集
- python - 如何修复“仅张量变量支持切片赋值”
- cassandra - Cassandra 更改主键与触发多个选择查询