Javascript 返回一个孩子';使用orderByChild和equalTo在Firebase查询中的s值
我正在尝试为存储中当前登录到firebase实时数据库的图像提取URL 这是一个快照游戏-屏幕上将有两张卡(左图和右图),当两张卡匹配时,用户将单击快照 我的所有图像URL都以以下方式存储: 每一个都有一个称为“索引”的唯一子级,我还有另一个树,它只是每个图像记录的运行计数。因此,目前我正在运行一个函数,它检查当前计数的总数,然后执行一个随机函数来生成一个随机数,然后使用orderByChild和一个包含随机索引数的equalTo对images树执行数据库查询 如果我记录这个数据快照,我可以看到一个记录的完整节点(索引、分数、url、用户及其值),但是如果我尝试只拉url,我会得到一个Null值。令人恼火的是,我似乎可以在空闲时返回术语“URL”,但我无法获得其潜在价值。我想知道这是否是因为它是一个字符串而不是一个数字,但我找不到任何东西表明这是一个问题 请记住,我在max只学了大约一周Javascript,所以如果我犯了明显的新手错误,这可能就是原因 下面是一段代码片段,向您展示我的意思:Javascript 返回一个孩子';使用orderByChild和equalTo在Firebase查询中的s值,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我正在尝试为存储中当前登录到firebase实时数据库的图像提取URL 这是一个快照游戏-屏幕上将有两张卡(左图和右图),当两张卡匹配时,用户将单击快照 我的所有图像URL都以以下方式存储: 每一个都有一个称为“索引”的唯一子级,我还有另一个树,它只是每个图像记录的运行计数。因此,目前我正在运行一个函数,它检查当前计数的总数,然后执行一个随机函数来生成一个随机数,然后使用orderByChild和一个包含随机索引数的equalTo对images树执行数据库查询 如果我记录这个数据快照,我可以看
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;
})
})
})
对Firebase数据库执行查询时,可能会有多个结果。因此,快照包含这些结果的列表。即使只有一个结果,快照也将包含一个结果列表 您的代码需要通过在Snapshot.forEach()上循环来满足该列表:
对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;
})
})