我正在开发一个应用程序,在某些情况下,需要更改Firebase节点的ID设置。
例如,假设我想将“ IDB8BD7FA9990E5A3E”更改为“ IDAAAAAAAAAAAAAAAAAAA”之类的内容。
我已经在此站点上进行了一些研究,似乎不可能直接将提及的ID重命名为我喜欢的另一个ID,我需要首先复制其所有内部数据,然后复制用我想要的新名称将其放入另一个节点。
但是有一个问题,内部数据有一个字段用于在说节点创建时检查节点是否已创建,因此服务器中有一条规则,对于任何新条目,该规则都会自动禁止如果时间与实际时间不匹配,则要创建一个新条目,该字段也需要执行一些计算,因此在新条目中更改它不是一个选择,应保持原样。 >
我看到了执行此操作的方法,我需要添加一条规则,以检查是否创建了新节点,即使该字段与当前时间不匹配,也要检查其所有内部数据是否正确。与数据库另一节点中的相同,则可以插入新数据。
但是问题是我看不出有这样的规则,我不知道如何制定一个规则来比较该节点的内部数据(如果有其他节点的内部数据,并且是否插入了相同的条目)。
对于这种特殊情况,我们假设除了节点“ IDB8BD7FA9990E5A3E”之外,我们还有一个节点“ IDBBBBBBBBBBBBBBBBBB”,还假设在第一种情况下,“ IDB8BD7FA9990E5A3E”具有与节点“ IDAAAAAAAAAAAAAAAA”相同的内部数据希望插入。规则将检查:“ IDAAAAAAAAAAAAAAAAAAA”的内部数据是否等于“ IDBBBBBBBBBBBBBBBBBBBB”的内部数据?不,然后转到以下。 “ IDAAAAAAAAAAAAAAAA”的内部数据是否等于“ IDB8BD7FA9990E5A3E”的内部数据?是的,插入了“ IDAAAAAAAAAAAAAAAAAAA”。 (此检查显然可以增长到数据库上任意数量的节点。)
另一方面,如果内部数据与任何现有节点的内部数据不完全匹配,则不会插入。
这有可能做到吗?在这种情况下,我需要使用哪种Firebase规则语法来做到这一点?
也许还有一种更简单的方法可以解决此问题,所以我愿意就其他方法提出建议。