【问题标题】:Is there a way to push data into firebase without having the UID有没有办法在没有 UID 的情况下将数据推送到 firebase
【发布时间】:2017-01-25 21:42:23
【问题描述】:

我希望创建一个报告员工结构,我使用推送功能生成的内部键作为 EID,并将报告员工 EID 嵌套在报告员工 EID 下。所以对于例如。如果经理有 EID:-KbAGV6Uhg0BKK31HduN,报告工程师有 EID:-Kb9ioY8dkBEOO46uX7t,Json 结构看起来像

{
  "-KbAGV6Uhg0BKK31HduN " : {
      "reportingID" : "-Kb9ioY8dkBEOO46uX7t"
    }
  }

但因为我使用的是推送功能,所以看起来像这样:

{
  "-KbAGV6Uhg0BKK31HduN" : {

    "-KbAH1RiVsz5FpSFudD2" : {
      "reportingID" : "-Kb9ioY8dkBEOO46uX7t"
    }
  }
}

我不需要这个额外的密钥 (-KbAH1RiVsz5FpSFudD2) 可以做些什么来避免它,或者在其位置使用 E1 或其他简单标识符之类的其他东西,因为密钥使结构过于复杂

【问题讨论】:

  • @Frank van Puffelen 请看一下
  • 没有必要ping我。我要么有时间提供帮助,要么没有,ping 没有任何区别。
  • @Frank van Puffelen 是的,没错,但是您已经正确回答了大部分问题,因此我正在向您发送消息,firebase 文档也非常不足
  • 推送功能本身不会导致这种情况。这就是您生成推送功能正在使用的引用的方式。发布您的代码。

标签: javascript firebase firebase-realtime-database


【解决方案1】:

如果您想使用推送,您所描述的是 Firebase 处理事情的方式。

您可以使用 set 方法来执行以下操作,而不是推送:

ManagerID/directReports/EngineerID

EngineerID 可以包含一些关于工程师的附加信息或一些对应用程序有用的键:值对。

JSON 结构如下所示:

"ManagerGUID":{
    "directReports": {
        "EngineerGUID":{
            "someinfokey":"somevalue"
        }
    }
}

这样,如果您想要一个列表或可迭代的,您只需下载 ManagerID/directReports 节点并使用工程师的原始密钥拥有各个对象。在转换为数组时可能会做一些额外的工作,但听起来这就是你想要做的。如果我不在基地,请告诉我,我可以更新我的答案。

【讨论】:

  • 我听不懂你想说的我也需要一个 Json 结构
  • @joel J_Everhart 是对的。只需使用设置功能而不是推送。您需要的一切都在 Firebase 文档中。 firebase.google.com/docs/database/ios/read-and-write
  • @joel 我更新了答案以包含 JSON 结构。希望这有助于澄清我的答案。
【解决方案2】:

这不是最佳做法,但您可以为每个条目生成一个全局唯一 ID,而不是 Firebase 生成的 uid。 在这里查看一个 id 生成器:https://gist.github.com/mikelehen/3596a30bd69384624c11

【讨论】:

    猜你喜欢
    • 2018-08-06
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    相关资源
    最近更新 更多