You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Web数据获取问题:无法读取Riders节点下rating值

解决Firebase获取Users->Riders->rating节点值的问题

嘿,我来帮你搞定这个Firebase数据读取的问题!根据你的现有代码,我分两种常见场景给出具体实现方案:

场景1:获取所有骑手的评分值

如果需要读取所有骑手的rating数据,你可以在gotDataa函数里遍历返回的骑手对象,逐个提取评分:

<script>
  database = firebase.database();
  var ref = firebase.database().ref().child("Users").child("Riders");
  ref.on('value', gotDataa, errDataa);

  function gotDataa(data){
    // 获取所有骑手的完整数据
    var riders = data.val();
    
    // 遍历每个骑手的键值对
    for (const riderId in riders) {
      // 确保是骑手对象自身的属性(避免原型链污染)
      if (riders.hasOwnProperty(riderId)) {
        // 提取当前骑手的rating值
        const riderRating = riders[riderId].rating;
        
        // 这里可以做你需要的后续处理,比如打印或渲染到页面
        console.log(`骑手ID: ${riderId},评分: ${riderRating}`);
      }
    }
  }

  function errDataa(error){
    console.error("读取数据失败:", error);
  }
</script>

场景2:获取单个特定骑手的评分值

如果你只需要某个特定骑手的评分,两种方式都可以实现:

方式A:直接定位到目标节点(更高效)

直接将Ref指向该骑手的rating节点,避免读取整个Riders数据集:

<script>
  database = firebase.database();
  // 替换成你要查询的骑手ID
  const targetRiderId = "your-target-rider-id";
  var ref = firebase.database().ref(`Users/Riders/${targetRiderId}/rating`);
  
  ref.on('value', (data) => {
    const rating = data.val();
    console.log(`目标骑手的评分: ${rating}`);
    // 这里处理评分数据
  }, errDataa);

  function errDataa(error){
    console.error("读取数据失败:", error);
  }
</script>

方式B:在现有回调中直接访问

如果已经拿到了所有骑手的数据,直接通过骑手ID访问对应的rating:

<script>
  database = firebase.database();
  var ref = firebase.database().ref().child("Users").child("Riders");
  ref.on('value', gotDataa, errDataa);

  function gotDataa(data){
    var riders = data.val();
    // 替换成实际的骑手ID
    const targetRiderId = "your-target-rider-id";
    const targetRating = riders[targetRiderId].rating;
    
    console.log(`目标骑手的评分: ${targetRating}`);
    // 后续处理逻辑
  }

  function errDataa(error){
    console.error("读取数据失败:", error);
  }
</script>

额外提示

  • 确保你的Firebase数据库规则允许读取Users/Riders节点(测试阶段可暂时设为公开,上线后一定要配置安全规则)
  • 如果rating节点可能不存在,建议添加判断避免报错,比如用可选链操作符:const rating = riders[riderId]?.rating || 0;

内容的提问来源于stack exchange,提问作者K132133 Syed Arsalan Hussain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:43:34