有没有办法在没有UID的情况下将数据推送到firebase

时间:2017-01-23 12:45:15

标签: javascript firebase firebase-realtime-database

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

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

但是因为我使用的是push函数,所以它看起来像这样:

{
  "-KbAGV6Uhg0BKK31HduN" : {

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

我不需要这个额外的密钥(-KbAH1RiVsz5FpSFudD2)可以做些什么来避免它或者有其他东西像E1或其他一些简单的标识符,因为关键是使结构太复杂

2 个答案:

答案 0 :(得分:1)

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

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

经理ID / directReports /的engineerID

其中,EngineerID可以包含有关工程师的一些其他信息或某些关键:值对在应用程序中有用。

JSON结构如下所示:

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

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

答案 1 :(得分:0)

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