Javascript Firebase自定义查询

Javascript Firebase自定义查询,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,如何从Firebase Web API的以下结构中获取Inmate_DOB的值 请找到下面的快照: 我尝试了下面的代码,但没有检索到值 GetInmate.Js 我想你只是在'Tables/Inmate\u Data'之后的原始代码中缺少了一个/ return firebase.database().ref('Tables/Inmate_Data/' + userId).once('value') .then(function(snapshot) { var Inmate_dob

如何从Firebase Web API的以下结构中获取Inmate_DOB的值

请找到下面的快照:

我尝试了下面的代码,但没有检索到值

GetInmate.Js


我想你只是在
'Tables/Inmate\u Data'
之后的原始代码中缺少了一个
/

return firebase.database().ref('Tables/Inmate_Data/' + userId).once('value')
.then(function(snapshot) {
      var Inmate_dob = snapshot.val().Inmate_DOB;
      alert(Inmate_dob);
}

您可能希望使用
onAuthStateChanged()
,而不是使用
firebase.auth().currentUser.uid
,这样您可以始终确保只有当用户实际登录时才会执行块内的代码,否则
firebase.auth()。currentUser
可能返回null。如果已确保此值不为null,则可以执行以下操作:

var userID = firebase.auth().currentUser.uid; //Current User UID

firebase.database().ref('Tables/Inmate_Data/'+userID).once('value').then(snapshot => {
    const userDOB = snapshot.val().Inmate_DOB;
    alert(userDOB);
});
firebase.database().ref('Tables/Inmate_Data').on('child_added', snapshot => {
    firebase.database().ref(snapshot.key+'/Inmate_DOB').on('value', snap => {
        const userDOB = snap.val();
        alert(userDOB);
    });
});
为了避免得到空值,您可以将上述代码放入
onAuthStateChanged

firebase.auth().onAuthStateChanged(function(user) {

    if(user) {
        var userID = user.uid;

        firebase.database().ref('Tables/Inmate_Data/'+userID).once('value').then(snapshot => {
            const userDOB = snapshot.val().Inmate_DOB;
            alert(userDOB);
        });
    }
});
如果要检索所有用户的出生日期,可以执行以下操作:

var userID = firebase.auth().currentUser.uid; //Current User UID

firebase.database().ref('Tables/Inmate_Data/'+userID).once('value').then(snapshot => {
    const userDOB = snapshot.val().Inmate_DOB;
    alert(userDOB);
});
firebase.database().ref('Tables/Inmate_Data').on('child_added', snapshot => {
    firebase.database().ref(snapshot.key+'/Inmate_DOB').on('value', snap => {
        const userDOB = snap.val();
        alert(userDOB);
    });
});

获取值而不是给定一个静态键我使用的代码与您上面提到的相同,我使用的是userId值,但我将DOB值获取为null。@ShivSuthanM您是否尝试将此代码放入
onAuthStateChanged()中
?@ShivSuthanM我已经更新了我的答案,将
包含在authstatechanged
@Chinmay Sarupria-我不知道我的代码流中遗漏了什么,请在上面更新的问题中检查我的完整代码。我仍然没有收到DOB。控制台日志:无法读取属性'Inmate_DOB'@ShivSuthanM我刚刚创建了一个类似于您的示例数据库,代码对我有效,它正确地为我提供了Inmate_DOB。我检查了你的代码,你缺少一个
报警(测试)后的线路上的code>