在Android的Firebase数据库上查询

时间:2016-09-17 22:08:12

标签: android firebase firebase-realtime-database

我知道有很多类似的问题,但没有人能找到我想要的答案,我咨询过的所有问题都有答案,关于childrenEvetListeners ......

我的问题非常简单。这是我的Firebase数据库: enter image description here

我的问题是:如何进行查询,检查用户名是否为" fofof"存在?

1 个答案:

答案 0 :(得分:1)

你有一个混合结构,这使事情变得复杂。但如果您只是在/users/-K....下寻找匹配项,则可以找到匹配项:

Query query = ref.child("users").orderByChild("User/username").equalTo("fofof");
query.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
            Log.i(TAG, "fofof exists and is stored under key "+userSnapshot.getKey());
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
    }
});

有关您当前设置的一些警告:

  • 您在推送ID下存储用户。虽然推送ID非常适合没有自然密钥且您希望按时间顺序存储的集合,但最好将用户存储在UID下。所以例如/users/s5iu...
  • 您已将用户信息嵌套到比必要深一级的位置。虽然这有效,但我会删除树中的User级别。
  • 您的用户直接位于/users下,而其他用户则存储在更深层次。创建这样的混合模型是一个坏主意。