是否可以将 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 数据

Firebase 功能条带错误

是否可以使用 Firebase 存储将多个图像添加到 Firebase 数据库? - 颤振

是否可以将一组坐标保存到firebase?