检查 Firebase 数据库子级是否已存在并在不存在时添加它的最佳方法是什么?

问题描述 投票:0回答:1

我将 Firebase 实时数据库(不是 Firestore)与 Unity 和 C# 结合使用。 我的数据库具有以下结构:

asdfghjkl
   Lance Armstrong: 30
qwertyuiop
   Bob Dylan: 45
zxcvbnm
   Googoo Gaga: 29

我想查看某个顶级子级是否存在,如果不存在,我想创建它。不然我想更新一下。
例如,我想知道数据库中是否存在

asdfghjkl
,如果存在,请将
Lance Armstrong
的值更新为
32
。如果没有,我想创建它并在其下方添加
Lance Armstrong: 32
。 这样做的最佳方法是什么?

我已经尝试过了

FirebaseDatabase.DefaultInstance.GetReference("asdfghjkl").GetValueAsync()

但是当没有条目时

asdfghjkl
,此代码不会自动创建它。 我该怎么做?有没有一种方法可以一次性读写?

c# firebase unity-game-engine firebase-realtime-database
1个回答
0
投票

Firebase(以及大多数数据库)的最佳方法是寻找所谓的幂等写入操作,因为它们的扩展性最好。在你的例子中,这就引出了一个问题:总是将值

32
写入路径
asdfghjkl/Lance Armstrong
怎么样?这样你就不需要先检查节点是否存在。

这适用于 Firebase,因为当您在祖先节点下写入值时,会自动创建祖先节点(因此,如果

asdfghjkl
Lance Armstrong
不存在,则会自动创建)。顺便说一句,当祖先节点下不再有任何值时,祖先节点也会自动删除,这意味着在大多数情况下您不必考虑它们。


如果您写入的值取决于数据库中的值,则上述不一定适用。在这种情况下,您将需要使用交易

© www.soinside.com 2019 - 2024. All rights reserved.