是否可以将 pushID 绑定到 Firebase 数据库中的 userUid
Posted
技术标签:
【中文标题】是否可以将 pushID 绑定到 Firebase 数据库中的 userUid【英文标题】:Is it possible to bind a pushID to a userUid in a Firebase database 【发布时间】:2021-12-13 09:46:10 【问题描述】:我正在尝试从我数据库的另一个分支中的用户 UID 创建一个 PushID。
到目前为止,我已经这样做了:
DatabaseReference userUUID = FirebaseDatabase.getInstance().getReference().child(user.getUid());
String pushUser = userUUID.push().getKey();
HashMap<String, Object> withdrawMap = new HashMap<>();
withdrawMap.put("id", pushUser);
withdrawMap.put("balance", "5000");
withdrawMap.put("email", emailMP);
withdrawMap.put("date", dateString);
withdrawMap.put("statut", "Pending");
withdrawMap.put("image", mediumPackImage);
referenceWithdraw.child(pushUser)
.setValue(withdrawMap)
.addOnCompleteListener(new OnCompleteListener<Void>()
这是我的 .json 格式的数据库(第一个和第二个来自 2 个不同的用户)
"Withdraw" :
"-Mn1-FONHwx1-EmwZKND" :
"amount" : "5000",
"date" : "27/10/2021",
"email" : "example@gmail.com",
"id" : "-Mn1-FONHwx1-EmwZKND",
"statut" : "Pending"
,
"-Mn1-ZI4lkbv4P76UMQl" :
"amount" : "5000",
"date" : "27/10/2021",
"email" : "example@gmail.com",
"id" : "-Mn1-ZI4lkbv4P76UMQl",
"statut" : "Pending"
referenceWithdraw = FirebaseDatabase.getInstance().getReference().child("Withdraw");
我想说,从逻辑上讲,孩子是从 Firebase 用户的 Uid 创建的 ID(代码在任何情况下都清楚)
现在假设我想检索用户的 PushId 并显示内容
referenceHistory = FirebaseDatabase.getInstance().getReference().child("Withdraw").child("????");
** 我必须在第二个孩子中放入什么才能检索从用户 ID 创建的 pushID?**
希望我能很好地解释自己
【问题讨论】:
请编辑您的问题并将您的数据库结构添加为 JSON 文件。您可以通过单击 Firebase Console 的溢出菜单 (⠇) 中的导出 JSON 来获取它,以查看它的外观。 我修改好了! “撤销”节点下有两个子节点。你想要哪一个? “Withdraw”下的子项是从 Firebase 用户的 Uid 创建的 ID。所以我想为用户恢复他各自的ID 不,在“提现”节点下,有两个推送的ID,-Mn1-FONHwx1-EmwZKND
和-Mn1-ZI4lkbv4P76UMQl
。您的架构中不存在 UID。等级不高也不低。那么你对这两个孩子中的哪一个感兴趣?
【参考方案1】:
为了能够获取与具有特定电子邮件地址的单个用户对应的数据,请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference withdrawRef = rootRef.child("Withdraw");
Query queryByEmail = withdrawRef.orderByChild("email").equalTo("example@gmail.com");
queryByEmail.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>()
@Override
public void onComplete(@NonNull Task<DataSnapshot> task)
if (task.isSuccessful())
for (DataSnapshot ds : task.getResult().getChildren())
String id = ds.child("id").getValue(String.class);
Log.d("TAG", id);
else
Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
);
根据您的评论:
第一个让我感兴趣。
由于两个孩子的电子邮件地址相同,因此 logcat 中的结果将是:
-Mn1-FONHwx1-EmwZKND
-Mn1-ZI4lkbv4P76UMQl
如果您只想要第一个结果,您可以在现有查询中添加.limit(1)
调用,或者确保您拥有唯一的电子邮件地址。
【讨论】:
您好,很抱歉回复时间不长。 “get()”不可用,你知道它可以用什么代替吗?除此之外,代码对我来说看起来非常好! 您不能使用get()
,很可能是因为您没有使用最新的 Firebase 实时数据库依赖项。尝试使用最新版本,并告诉我它是否有效。
好的,很好!感谢您在几天内给我时间。
我验证了你的回答,希望它能帮助其他人
如果您认为我的回答对未来的 Firebase 开发人员也有帮助,也请考虑 offering a vote-up (▲)。我真的很感激。谢谢!以上是关于是否可以将 pushID 绑定到 Firebase 数据库中的 userUid的主要内容,如果未能解决你的问题,请参考以下文章
尝试将syncfusion json数据绑定到Firebase中的实时数据库
ReactFire - 将 Firebase 绑定到 React 状态时,获取“对象作为 React 子项无效”
将事件处理程序绑定到文档并通过 useEffect 访问 firebase api 数据