在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 实时数据库事件获取父节点
iOS Swift 中的 firebase 实时数据库推送等价物是啥?