javascript - Firebase:如何在不知道其唯一ID的情况下更新记录的值项?

标签 javascript reactjs firebase firebase-realtime-database

所以,我的 firebase 结构如下:

"Posts" : {
  "0" : {
      "code": 12345TG4
      "Likes" : 59
  },
  "1" : {
      "code": RT560451
      "Likes" : 12
  }
}

理想情况下我想做的是:

var updateData = {
  Likes: 74
}

Posts.child(id).update(updateData);

但是我事先不知道UiD,但是我确实有‘code’的值,它本身就是一个唯一的值。

如何创建一个查询,该查询可以根据 Firebase 中“code”的已知值更新“Likes”值?

最佳答案

正如 Doug 评论和 Rodrigo 所示,您必须首先根据其代码查询该项目,然后才能更新它:

var ref = firebase.database().ref();
ref.child("Posts").orderByChild("code").equalTo("12345TG4").once("value", function(snapshot) {
    snapshot.forEach(function(child) {
        child.ref.update(updateData);
    });
});

更改您的模型

虽然上面的方法可行,但您应该考虑为什么将帖子存储在数组索引下,那么它们也已经有了唯一的 ID。在 Firebase 等 NoSQL 解决方案中,将帖子存储在代码下更为惯用:

"Posts" : {
  "12345TG4" : {
      "Likes" : 59
  },
  "RT560451" : {
      "Likes" : 12
  }
}

您将更新为:

ref.child("Posts").child("12345TG4").update({ Likes: 74 });

或者甚至:

"PostLikes" : {
  "12345TG4" :  59,
  "RT560451" :  12
}

然后:

ref.child("PostLikes/12345TG4/Likes").set(74);

关于javascript - Firebase:如何在不知道其唯一ID的情况下更新记录的值项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42102398/

相关文章:

javascript - 与YouTube播放器类似的视频播放器建议

javascript - Jquery 滑动不工作

javascript - Microsoft Graph 发送邮件但不发送附件(javascript SDK)

reactjs - 我应该开发一个单独的快速服务器,还是在我的 next.js 应用程序中处理所有 API 调用?

javascript - Reactjs 项目中的 Eslint 修复警告

Android:Firebase - 多个发件人将通知推送到特定设备

javascript - 有人可以向我解释为什么这个循环没有给我想要的结果吗?

reactjs - componentDidUpdate 与 componentDidMount

firebase - Dart null与Null

firebase - 如何修复此错误 "Function CollectionReference.doc()"