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

如何从Firebase Realtime Database读取值并将drinkId节点上移一级

JSON结构示意图

问题原因

  • 混淆了Firebase Realtime Database的Reference引用对象和DataSnapshot快照对象的用法,.val()是快照对象的专属取值方法,不能在引用对象上直接调用
  • Firebase Web SDK的取值方法为.val(),你代码中使用的.value()是错误写法

修正后代码

const cocktailRef= firebase
      .database()
      .ref("Ratings");  
cocktailRef.once("value", (snapshot) => {      
  snapshot.forEach((childSnapshot) => {           
    // 定位到all下的drinkId字段取值
    const drinkIdPass = childSnapshot.child("all/drinkId").val(); 
    // 在当前子节点根层级写入drinkId,若需删除原all节点下的drinkId,可改为
    // childSnapshot.ref.update({ drinkId: drinkIdPass, "all/drinkId": null });
    childSnapshot.ref.update({ drinkId: drinkIdPass }); 
  })
}) 

补充说明

定位嵌套字段时可以直接用/拼接路径,不需要多次调用.child()方法,代码更简洁。

内容的提问来源于stack exchange,提问作者Butri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:42:02