【问题标题】:fetching data from firebase without using primary key of the table在不使用表的主键的情况下从 firebase 获取数据
【发布时间】:2018-09-03 13:08:43
【问题描述】:

我想检索当前登录用户发布的帖子。但是使用当前代码,所有帖子都会被检索到。如何使用客户表中的 uid 检索预期数据?

post_id 是 Customer 表的主键,而不是 customerid(uid)

【问题讨论】:

  • 您好,欢迎来到 SO。请将您的图片添加到您的问题中(不要使用链接),以帮助其他人了解您的问题。
  • 那么您想获取所有具有特定 uid 的客户吗?请回复@。
  • "使用当前代码检索所有帖子" 请在您的问题中分享当前代码,以便我们看到您在做什么。迄今为止,在 Stack Overflow 上发布 minimal code that reproduces where you are stuck 是快速获得帮助的最佳方式。
  • @FrankvanPuffelen 我只想通过用户的 uid 访问特定的投诉地点...所以我可以将特定用户的投诉地点列表放在“我的投诉模块”中。

标签: java android firebase firebase-realtime-database


【解决方案1】:

获取当前用户的引用并使用它来查询用户发布的帖子,如下所示:

FirebaseUser user =FirebaseAuth.getInstance().getCurrentUser(); 
Query reference;

                       reference = FirebaseDatabase.getInstance().
                       getReference("customers").orderByChild("customerId").equalTo(user.getUid());


                       reference.addListenerForSingleValueEvent(new 
                       ValueEventListener() {
                       @Override
                       public void onDataChange(DataSnapshot dataSnapshot) {
                       for(DataSnapshot datas: dataSnapshot.getChildren()){
                       String 
                         customerId =datas.child("customerId").getValue().toString();

                       String 
                         customerName =datas.child("customerName").getValue().toString();

                       String 
                         phone =datas.child("phone").getValue().toString();


                      }
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                    }
                  });

    }

【讨论】:

  • 我只想通过用户访问投诉地点..我并不是所有的帖子都被检索..仅根据他们的客户 ID 检索投诉详细信息,这是一个 uid....所以我可以添加特定用户在我的应用“我的投诉”模块中提出的投诉列表(根据 uid)
  • 你能按照弗兰克的吩咐去做吗?
【解决方案2】:

这样试试,

步骤1.获取正确的子节点,并通过获取当前登录的用户uid对其进行查询:-

  String currentUser = FirebaseAuth.getInstance().getCurrentUser().getUid();

  DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("customers").orderByChild("customerId").equalTo(currentLoginId).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Iterator<DataSnapshot> dataSnapshots = dataSnapshot.getChildren().iterator();
            List<Customers> customers = new ArrayList<>();
            while (dataSnapshots.hasNext()) {
                DataSnapshot dataSnapshotChild = dataSnapshots.next();
                Customers user = dataSnapshotChild.getValue(Customer.class);
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

【讨论】:

  • 如何获取'currentLoginId'?
  • 哦我错了, currentUser 变量是 currentloginUid ,请使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-13
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
相关资源
最近更新 更多