在firebase实时数据库中创建相同的节点

Posted

技术标签:

【中文标题】在firebase实时数据库中创建相同的节点【英文标题】:Make identical node in firebase realtime database 【发布时间】:2020-11-27 12:44:26 【问题描述】:

假设有两个节点:

    用户数据(在我们拥有的“用户数据”内:)

    唯一标识 名称:“ABC” 纬度:“123” 经度:“456”

    用户密钥(在我们拥有的“用户密钥”内:)

    唯一标识 g:“敬畏46q” l 0:123 1:456

在这里,我想用相同的唯一 ID 保存“用户数据”和“用户密钥”。但我不知道该怎么做。

【问题讨论】:

到目前为止你有什么尝试? 我已经尝试过 push() 方法,但它会生成不同的唯一 ID。我是否必须使用 FirebaseAuth 使“用户数据”和“用户密钥”的唯一 ID 相似。 【参考方案1】:

我尝试过 push() 方法,但它会生成不同的唯一 ID。

这是预期的行为,因为多次调用push(),每次都会生成一个新的随机 id。

我是否必须使用 FirebaseAuth 来使“用户数据”和“用户密钥”的唯一 ID 相似。

对于用户ID,是的,最合适的解决方案是实现Firebase Authentication,并使用在此过程中生成的UID。最后,您可以在需要的每个引用中简单地使用相同的UID,例如:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference userDataRef = rootRef.child("userData").child(uid); //One reference
userDataRef.setvalue(yourObject);
DatabaseReference otherUserDataRef = rootRef.child("otherUserData").child(uid); //Second reference
otherUserDataRef.setvalue(otherObject);

【讨论】:

我厌倦了这个,它成功地保存了具有相同唯一 ID(uid)的“用户数据”和“用户密钥”。但是我希望同一个用户添加多个产品,并且使用FirebaseAuth.getInstance().getCurrentUser().getUid(); 我只能拥有一个唯一的 ID,在尝试新产品时会被覆盖。 那么有没有其他方法可以让单个用户为“用户数据”和“用户密钥”保存多个具有唯一 ID 的产品。 很高兴听到这个消息 :) uid 应该用于识别数据库中不同节点中的用户。但是,要识别产品,您绝对应该使用push() 方法,这样您就可以为每个产品创建不同的 id。 感谢它正在从 currentUser 检索所有数据。但是我希望它从所有用户那里检索数据,即使用户(正在使用该应用程序查找产品)没有登录,我们可以这样做 这基本上是另一个问题。为了遵守这个社区的规则,请发布另一个新问题,以便我和其他 Firebase 开发人员可以为您提供帮助。 当然是 Alex Mamo :)

以上是关于在firebase实时数据库中创建相同的节点的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 存储 - 将图像上传到 Firebase 存储并在实时数据库中创建指向该图像的链接

从 Flutter 应用程序中的 Firebase 实时数据库事件获取父节点

多个用户的 Firebase 实时数据库身份验证

iOS Swift 中的 firebase 实时数据库推送等价物是啥?

数据未从 Android 应用程序写入 Firebase 实时数据库

处理 Firebase 身份验证和数据库实时之间事务的最佳方式