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

我的问题要简单得多。这是我的Firebase数据库:
android - 在Android版Firebase数据库上进行查询-LMLPHP

我的问题是:如何进行查询,检查是否存在具有username =“ fofof”的用户?

最佳答案

您具有混合结构,这使事情变得复杂。但是,如果您只是在/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下的用户,而其他用户的存储级别则更高。创建这样的混合模型是一个坏主意。

关于android - 在Android版Firebase数据库上进行查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39552168/

10-10 23:54