我希望创建一个报告员工结构,我使用推送功能生成的内部密钥作为EID,并将在报告的员工EID下嵌套报告员工EID。所以对于Eg。如果经理有EID:-KbAGV6Uhg0BKK31HduN且报告工程师有EID:-Kb9ioY8dkBEOO46uX7t,Json结构看起来像
{
"-KbAGV6Uhg0BKK31HduN " : {
"reportingID" : "-Kb9ioY8dkBEOO46uX7t"
}
}
但是因为我使用的是push函数,所以它看起来像这样:
{
"-KbAGV6Uhg0BKK31HduN" : {
"-KbAH1RiVsz5FpSFudD2" : {
"reportingID" : "-Kb9ioY8dkBEOO46uX7t"
}
}
}
我不需要这个额外的密钥(-KbAH1RiVsz5FpSFudD2)可以做些什么来避免它或者有其他东西像E1或其他一些简单的标识符,因为关键是使结构太复杂
答案 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