You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase数据库中能否将pushID绑定到userUid并查询对应数据

问题解决步骤

首先明确你当前代码的逻辑缺陷:你目前的Withdraw节点下的所有记录,没有存储对应用户的UID字段,直接填写固定child值无法查询到对应用户的所有提现记录,需要先调整存储逻辑,再做查询:


第一步:修改存储逻辑,补充用户UID字段

你在生成withdrawMap的时候,新增一条用户UID的映射:

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);
// 新增这行,存入当前用户的UID
withdrawMap.put("uid", user.getUid());

这样每条提现记录都会和对应用户的UID绑定。


第二步:按用户UID查询所有关联的提现记录

你不需要在child("Withdraw")后面拼接固定子节点,而是用Firebase的条件查询筛选对应UID的记录即可:

// 先获取当前登录用户的UID
String currentUid = user.getUid();
// 构建查询条件:筛选Withdraw节点下uid字段等于当前用户UID的所有记录
Query userWithdrawQuery = FirebaseDatabase.getInstance().getReference()
        .child("Withdraw")
        .orderByChild("uid")
        .equalTo(currentUid);

// 给查询添加监听器获取结果
userWithdrawQuery.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot snapshot) {
        for (DataSnapshot ds : snapshot.getChildren()) {
            // 这里遍历拿到的就是当前用户的所有提现记录
            String withdrawId = ds.getKey();
            // 可以把数据转成你自定义的实体类或者直接取值
            String amount = ds.child("amount").getValue(String.class);
            // 后续做页面展示逻辑即可
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError error) {
        // 处理查询错误
    }
});

补充说明

如果你仅需要查询单条提现记录,你可以直接把之前生成的pushUser值作为第二个child的参数传入,但这种方式不适合拉取某个用户的全部提现记录,推荐优先使用上述条件查询方案。

内容的提问来源于stack exchange,提问作者arma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:54:05