android firebase:Firebase数据库中的查询不相等 [英] android firebase : NOT EQUAL query in Firebase Database
问题描述
我的用户对象如下:
{
"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屋!