android firebase:Firebase数据库中的查询不相等 [英] android firebase : NOT EQUAL query in Firebase Database

查看:103
本文介绍了android firebase:Firebase数据库中的查询不相等的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的用户对象如下:

{
  "deviceTokens" : {
    "SgJd7o1hK7YbJnygnYWvaz4qkr42" : {
      "c-sfcTB3iEA:APA91bEvuzhX1nlrhoxVmR69lvwu0H1zyRjOXd5b14LngObuj8WeHkmlel6AOyrU7B2alBO1vW0pIO4gXGurvz5llCloyYpQv7vCq0_3fVEhmrIGfJ2S13TiXqVLJgWUCs95_AYZlysj" : true,
      "cnQdyuxBgz0:APA91bFZTPEFrl1Vf9Nw9ZvdtNsW1ll3YYq8WIwT799NVTp6S281v56UVJ3lo0kDK_rFZfoHuarX9Qb8NL8TJXi9A_jH4RhbDp3ecbW-tHdrYR06PwYdSiMfRjIxJOuPtHuqy0TNOw4K" : true,
      "d3D81crwy0E:APA91bEoAeWiOwm73bt2DvNNdv_NUn0PwjQcLa6z8ZYjDyuHWsNeDPVDCXOATKB5AFoBb7iOW6kgzU41oYFqHYek1Cngv6ArsrZO0crq_bV3PzfQxKvRN8xYX1_WryaR2tpAVP_4czgx" : true,
      "dHBaxzKqhMw:APA91bGmQ5KhxiaE48_IQHEJVpvpvQdXUgAd_a1reJiyh4Z5W6dhNZB4KesaQuiRrj-VLxdCvxIroH3a-75zUaYd6_yLtoCzNfNGT8EWqUrtC3FSibOA_cwPye09C001zfFe_pHv6Wph" : true,
      "dz8wf231cXE:APA91bEAmfPu4QWRstKE5kqtN-UtgNpOIG7KWxsjFB1oIOp9cKhoWfbnpsvMTd3YgNw09jVNK6lUgKXMNt4AND0cZGcepkqQyZTDNh5KA5SU9KbbD7MJzxGhwGhGlFV-4hiOOhumoRxs" : true
    }
  },
  "users" : {
    "SgJd7o1hK7YbJnygnYWvaz4qkr42" : {
      "displayName" : "Chintan Soni",
      "email" : "chintansoni202@gmail.com",
      "photoUrl" : "https://lh5.googleusercontent.com/-JNfSscqwEng/AAAAAAAAAAI/AAAAAAAADbs/dj7t_7AYlzo/s96-c/photo.jpg"
    }
  }
}

我可以使用以下方法查询Users对象:

I am able to query Users object using:

mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("users");

我想知道是否存在查询不平等的问题.我要进行查询,以使用户的孩子的密钥与我的FirebaseUser UID不匹配,这意味着我想获取除我的用户以外的用户记录.

I wonder if there is anyway to query inequality. I want to query such that User's child's key doesn't match my FirebaseUser UID, means I want to fetch records of Users except mine.

推荐答案

实际上,我不想创建自己的适配器,因为我认为FirebaseUI不会有这样的限制,但是我错了. 无论如何,这就是我的处理方式:

Actually, I didn't wanted to create my own adapter, because I believed that FirebaseUI would not have such a limitation, but I was wrong. Anyways, this is how I approached:

首先,从FirebaseDatabase的User Object中获取所有数据,然后进行过滤,最后设置该数据:

First of all fetch all the data from the User Object from FirebaseDatabase and then, filter on our end and finally, set that data:

FirebaseDatabase.getInstance().getReference().child("users")
   .addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Iterable<DataSnapshot> list = dataSnapshot.getChildren();

            // Getting current user Id
            String uid = getCurrentUserId();

            // Filter User
            List<User> userList = new ArrayList<>();
            for (DataSnapshot dataSnapshot1 : list) {
                if (!dataSnapshot1.getKey().equals(uid)) {
                    userList.add(dataSnapshot1.getValue(User.class));
                }
            }

            // Setting data
            mBaseRecyclerAdapter.setItems(userList);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

我在这里创建了自己的通用回收适配器: https://gist.github.com/chintansoni202/3c61aea787ae4bd49f26adee9dd40a08

I have created my own generic recycler adapter here: https://gist.github.com/chintansoni202/3c61aea787ae4bd49f26adee9dd40a08

这篇关于android firebase:Firebase数据库中的查询不相等的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆