Java Firebase按子值搜索

时间:2016-08-25 02:05:07

标签: java android firebase firebase-realtime-database

我正在尝试创建一个在Firebase上存储条目的应用程序。每个条目都有一个作者字段来指定编写者。但是,每个帖子(不论作者)都会被推送到一个共同的父母。有没有办法迭代这个父项下的每个条目并查找给定作者的所有帖子?

1 个答案:

答案 0 :(得分:1)

您可以使用Firebase Query。基本上,您不是下载所有数据库并自行过滤,而是在FirebaseReference查询某些孩子的价值。您可以尝试这样的方法来检索同一作者的所有帖子。

// Get your reference to the node with all the entries
DatabaseRefenrec ref = FirebaseDatabase.getInstance().getReference();

// Query for all entries with a certain child with value equal to something
Query allPostFromAuthor = ref.orderByChild("name_of_the_child_node").equalTo("author_name");

// Add listener for Firebase response on said query
allPostFromAuthor.addValueEventListener( new ValueEventListener(){
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot post : dataSnapshot.getChildren() ){
            // Iterate through all posts with the same author
        }
    }

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

为了获得更好的效果,请使用Firebase规则考虑indexing您的数据库。这使Firebase以有序的方式保存您的数据,从而更快地管理查询。