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

问题原因
- 混淆了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
相关产品推荐
相关产品推荐

