亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何過濾和檢索 Firebase 實時數據庫中的嵌套子項?

如何過濾和檢索 Firebase 實時數據庫中的嵌套子項?

慕森王 2021-09-04 17:24:24
這是我正在使用的數據庫結構的簡化版本:  "user" : {    "nhbAQ9p8BrMoAIbJNKvLlXTdiNz2" : {      "log" : {        "-LhMVugmjmIdqwrJSURp" : {          "a" : 25120,          "timeStamp" : 1560312000000,        },        "-Lh_Z9GsJJvlMOpVV9jU" : {          "a" : 19033,          "timeStamp" : 1564718400000,        }      }    }  }我在使用給定的用戶 ID(例如 nhbAQ9p8BrMoAIbJNKvLlXTdiNz2)和時間戳(例如1560312000000)過濾和檢索“a”的值時遇到問題。我已經嘗試了orderByChild(),equalTo()和 添加once()偵聽器的組合來完成任務,但null到目前為止它們才返回。我擁有的代碼:firebase.database().ref('user/' + userID + + '/log').orderByChild('timeStamp').equalTo(targetTimeStamp).once('value').then(function(snapshot){    let userLog = snapshot.val().a})其中userID是一個字符串,targetTimeStamp是一個數字。我檢查了DOC和崗位約orderByChild(),但我仍然不知道是什么原因導致它返回null。這是我第一次發布問題,如果有任何我可以更清楚地說明問題,請發表評論,非常感謝任何幫助!
查看完整描述

1 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

其中userID和targetTimeStamp都是字符串。


這就是什么都沒有返回的原因。在數據庫中,timeStamp屬性的值是一個數字,將數字與字符串進行比較永遠不會返回匹配項。


要使查詢工作,請將字符串轉換為數字:


...equalTo(parseInt(targetTimeStamp)).once(...

除此之外,針對 Firebase 數據庫的查詢可能有多個結果。因此快照包含這些結果的列表。即使只有一個結果,快照也會包含一個結果的列表。


所以你也需要處理這種情況:


firebase.database().ref('user/' + userID + + '/log').orderByChild('timeStamp').equalTo(targetTimeStamp).once('value').then(function(results){

    results.forEach(function(snapshot) {

        let userLog = snapshot.val().a

    })

})


查看完整回答
反對 回復 2021-09-04
  • 1 回答
  • 0 關注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號