Javascript 当firebase中的密钥未知时,如何获取孩子的孩子

Javascript 当firebase中的密钥未知时,如何获取孩子的孩子,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,下面的代码使我能够返回当前用户的所有表达式。 在此示例中,控制台中显示以下表达式: 但我不知道如何为当前用户列出表达式下的所有标题。 预期的结果应该是: 基克,克曼 function f_returnUserDetails(a){ var key; var childData; return new Promise(function(resolve, reject) { //return promise firebase.database().ref('

下面的代码使我能够返回当前用户的所有表达式。 在此示例中,控制台中显示以下表达式:

但我不知道如何为当前用户列出表达式下的所有标题。 预期的结果应该是: 基克,克曼

function f_returnUserDetails(a){
    var key;
    var childData;
    return new Promise(function(resolve, reject) { //return promise
        firebase.database().ref('/users/').orderByChild("uid").equalTo(a).on('value', function (snapshot) {
            snapshot.forEach(function(childSnapshot) {
                key = childSnapshot.key;
                childData = childSnapshot.val();
                resolve([childData, childSnapshot.key]);
            });
        });
    });
};

firebase.auth().onAuthStateChanged(function(user){
    var user = firebase.auth().currentUser;
    var uid = user.uid;
    f_returnUserDetails(uid).then((dbItems) => {
        console.log(dbItems[0].Expressions);
    });
});

通过执行以下操作,您应获得请求的值:

  firebase.database().ref('/users/').orderByChild("uid").equalTo(a).on('value', function (snapshot) {
      snapshot.forEach(function (childSnapshot) {
          key = childSnapshot.key;
          childData = childSnapshot.val();
          for (v of Object.values(childData.Expressions)) {
              if (v.hasOwnProperty('title')) {
                  console.log(v.title);
              }
          }
      });
  });

通过执行以下操作,您应获得请求的值:

  firebase.database().ref('/users/').orderByChild("uid").equalTo(a).on('value', function (snapshot) {
      snapshot.forEach(function (childSnapshot) {
          key = childSnapshot.key;
          childData = childSnapshot.val();
          for (v of Object.values(childData.Expressions)) {
              if (v.hasOwnProperty('title')) {
                  console.log(v.title);
              }
          }
      });
  });

您必须构建表达式数组并在函数中返回它

 function f_returnUserDetails(a){
      return firebase.database().ref('/users/' + a + '/Expressions').once('value')
                .then(snapshot => {
                   let expressions = [];
                   snapshot.forEach(childSnapshot =>{
                      let expression = childSnapshot.val();
                      expression.id = childSnapshot.key;
                      expressions.push(expression);
                   }); 
                   return expressions;
                });

 }
以后你可以这样做

f_returnUserDetails(uid).then((dbItems) => {
    console.log(dbItems[0].title);
});

您必须构建表达式数组并在函数中返回它

 function f_returnUserDetails(a){
      return firebase.database().ref('/users/' + a + '/Expressions').once('value')
                .then(snapshot => {
                   let expressions = [];
                   snapshot.forEach(childSnapshot =>{
                      let expression = childSnapshot.val();
                      expression.id = childSnapshot.key;
                      expressions.push(expression);
                   }); 
                   return expressions;
                });

 }
以后你可以这样做

f_returnUserDetails(uid).then((dbItems) => {
    console.log(dbItems[0].title);
});

function f_returnUserDetails(a){var key;var childData;var title return new Promise(function(resolve,reject){firebase.database().ref('/users/')).orderByChild(“uid”).equalTo(a).on('value',function(snapshot){snapshot.forEach(function(childSnapshot){key=childSnapshot.key;childData=childSnapshot.val();title=childSnapshot.val().title;resolve([childData,childSnapshot.key,title]);});};
`firebase.auth().onAuthStateChanged(函数(用户){var user=firebase.auth().currentUser;var uid=user.uid;f_returnUserDetails(uid).然后((dbItems)=>{console.log(dbItems[2]);});`问题是
title
不是
表达式的子节点,而是子节点。
函数f_returnUserDetails(a){var key;var childData;var title返回新承诺(函数(resolve,reject){firebase.database().ref('/users/')).orderByChild(“uid”).equalTo(a).on('value',函数(snapshot){snapshot.forEach(函数(childSnapshot){key=childSnapshot.key;childData=childSnapshot.val();title=childSnapshot.val().title;resolve([childData,childSnapshot.key,title]);});};
`firebase.auth().onAuthStateChanged(函数(用户){var user=firebase.auth().currentUser;var uid=user.uid;f_returnUserDetails(uid)。然后((dbItems)=>{console.log(dbItems[2]);}}问题是
title
不是
Expressions
的子节点,而是一个子节点。这会导致一个错误
Uncaught(in promise)TypeError:无法读取f_returnUserDetails处undefined的属性'title'。
我忘记了“Expressions”部分。我已经更新了答案。这导致一个错误
未捕获(承诺中)类型错误:无法读取f_returnUserDetails处未定义的属性“title”。然后
我忘记了“表达式”部分。我已经更新了答案