2017-10-21 101 views
0

我正在尝试使用UID获取电子邮件。这是我的火力数据库的样子:如何从firebase中使用UID获取电子邮件?

click here for picture of database

目前,这是我尝试,但它似乎并不奏效。

var newEmail = ''; 
var database = app.database().ref('User/'); 
database.orderByChild().equalTo(uid).on('value', function(snapshot) { 
    newEmail = snapshot.val().email; 
}) 

而且,我应该将电子邮件新增为UID,以便有一个散列卡ID?

回答

0

首先,您的参考路径不正确;在你的截图中,你有另一个父节点Uid

var newEmail = ''; 
var database = app.database().ref('User/Uid'); 
... 

其次,您要查询orderByChild,而没有经过路径参数,但你应该使用orderByKey反正。但是,您不需要查询参考;你知道你想要的值的快照的关键,所以你可以通过插入UID创建一个直接路径。

app.database().ref(`User/Uid/${uid}`).on('value', function(snapshot) { 
    newEmail = snapshot.val().email; 
}); 

最后,您正在收听的参考;如果您只需要一次该值,则可以按照相同的方式使用.once函数,正如名称所暗示的那样,该函数将被触发一次。

app.database().ref(`User/Uid/${uid}`).once('value', function(snapshot) { 
    newEmail = snapshot.val().email; 
}); 
+1

它是让我,因为两个小时,我尝试了一切,包括你的版本,但我用NEWEMAIL快照功能之外,以及异步的一部分。我将快照功能中的所有内容都移动了,现在它全部正常工作。 – Daven99

相关问题