【问题标题】:Returning a single child's value on Firebase query using orderByChild and equalTo使用 orderByChild 和 equalTo 在 Firebase 查询中返回单个孩子的值
【发布时间】:2018-09-01 10:39:16
【问题描述】:

我正在尝试为当前记录在 firebase 实时数据库中的存储中的图像提取 URL。

这是一个抢手游戏 - 屏幕上会有两张牌(左图和右图),当两张牌匹配时,用户将点击抢购。

我所有的图片网址都以以下方式存储:

每个人都有一个独特的孩子,称为“索引” - 我还有另一棵树,它只是每个图像记录的运行计数。所以目前我正在运行一个函数来检查当前计数的总数,然后执行一个随机函数来生成一个随机数,然后使用 orderByChild 和一个包含随机索引号的 equalTo 对图像树执行数据库查询。

如果我记录这个数据快照,我可以看到一个记录的完整节点(所以索引、分数、url、用户及其值)但是如果我尝试只提取 URL,我会返回一个 Null 值。我可以,相当烦人地,看似在闲暇时返回术语“URL”,但我无法获得潜在的价值。我想知道这是否是因为它是一个字符串而不是数字,但我找不到任何表明这是一个问题的东西。

请记住,我最多只学习了大约一周的 Javascript,所以如果我犯了明显的新手错误,这可能就是原因!

下面是一个代码 sn-p 来告诉你我的意思:

    var indRef = firebase.database().ref('index')
    var imgRef = firebase.database().ref('images')
    var leftImg = document.getElementById('leftImg')
    var rightImg = document.getElementById('rightImg')

    document.addEventListener('DOMContentLoaded', function(){

    indRef.once('value')
    .then(function(snapShot){

        var indMax = snapShot.val()
        return indMax;
    })
    .then(function(indMax){


        var leftInd = Math.floor(Math.random()* indMax + 1)
        imgRef.orderByChild('index').equalTo(leftInd).once('value', function(imageSnap){
            var image = imageSnap.child('url').val();
            leftImg.src=image; 
            })
        })
    })

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

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

    您的代码需要通过循环Snapshot.forEach() 来满足该列表:

       imgRef.orderByChild('index').equalTo(leftInd).once('value', function(imageSnap){
           imageSnap.forEach(function(child) {
             var image = child.child('url').val();
             leftImg.src=image; 
           })
        })
    

    【讨论】:

    • 嘿弗兰克,一如既往的完美答案!我看到你回复另一个帖子说这个,但不知道即使只返回一个结果,你仍然需要循环浏览!对于你给我的所有帮助,我绝对欠你一杯酒!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 2021-12-24
    • 2017-01-03
    • 2018-08-14
    • 1970-01-01
    相关资源
    最近更新 更多