是否可以在Firebase数据库中将pushID绑定到userUid



我试图在我的数据库的另一个分支中从用户的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 ?* *

希望我解释得很好

要能够获得具有特定电子邮件地址的单个用户对应的数据,请使用以下代码行:

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)调用到你现有的查询,或者你确保你有唯一的电子邮件地址。

最新更新