使用Firebase网络获取特定孩子的所有孩子

时间:2017-10-20 13:06:21

标签: firebase web firebase-realtime-database

我有一个firebase数据库,如下所示:

enter image description here

我需要选择随机声明。由于难以根据firebase'push'键选择随机记录(基于其他SO答案),我创建了一个数字键“n:1”等,所以我可以根据随机数进行呼叫。这是我检索随机语句的代码:

      function getStatement() {
        var ref= firebase.database().ref('/totNumState/');
        ref.once('value').then(function(snapshot) { 
            var max = (snapshot.val());
            var randomIndex = Math.floor(Math.random() * max) + 1;
            var rootRef = firebase.database().ref(); 
            rootRef.orderByChild('data').equalTo('n:'+randomIndex).once("value")

              .then(function(snapshot) {
                console.log(snapshot.val());
              });
        }, function(error){console.error(error)});
    }

问题:我的搜索得到“空”回复。 主要问题:我怎样才能在firebase网站上获得特定孩子的所有孩子? SECONDARY QUESTION(相关):当我确切知道我想要检索的记录时,为什么firebase会让我使用(资源饥饿)'orderByChild'?

感谢

1 个答案:

答案 0 :(得分:0)

对于寻求答案的其他人,基于该建议的工作解决方案是:

function getStatement() {
        var ref= firebase.database().ref('/totNumState/');
        ref.once('value').then(function(snapshot) { 
            var max = (snapshot.val());
            var randomIndex = Math.floor(Math.random() * max) + 1;

            var st = firebase.database().ref('data/n:'+randomIndex)
            st.once("value")
              .then(function(snapshot) {
                console.log(snapshot.val().statement);
              });
        }, function(error){console.error(error)});
    }

感谢上面的Jen。