从firebase检索值时接收未定义

时间:2018-05-28 00:20:31

标签: javascript firebase firebase-realtime-database

我的电话错在哪里?第一个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);
    })
}

结果:

enter image description here

火力地堡:

enter image description here

1 个答案:

答案 0 :(得分:2)

对Firebase数据库执行查询时,可能会有多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。

您的代码未考虑该列表。最简单的方法是使用Snapshot.forEach()

roleRef.orderByChild('user').equalTo(user.uid).once('value', (snapshot) => {
  snapshof.forEach((roleSnapshot) => {
    console.log(roleSnapshot.val())
    console.log(roleSnapshot.val().user);
  });
})