Firebase数据库查询就像Twitter热门推文一样

时间:2018-01-09 04:24:52

标签: android firebase twitter firebase-realtime-database

好吧我在firebase数据库上使用google github。有人评论如果用户喜欢别人评论,他们可以给出明星(比如)。另一方面,我想制作一个只显示最高评论的页面。如果我使用此查询:

示例代码如下 -

package com.google.firebase.quickstart.database.fragment;

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.Query;

    public class MyTopPostsFragment extends PostListFragment {

        public MyTopPostsFragment() {}

        @Override
        public Query getQuery(DatabaseReference databaseReference) {
            // [START my_top_posts_query]
            // My top posts by number of stars
            String myUserId = getUid();
            Query myTopPostsQuery = databaseReference.child("user-posts").child(myUserId)
                    .orderByChild("starCount");
            // [END my_top_posts_query]

            return myTopPostsQuery;
        }
    }

它将返回所有顶级评论。如何指定诸如周或日的最高评论。我的datasnapshoot中还有一个时间戳

1 个答案:

答案 0 :(得分:1)

Firebase实时数据库不支持链式查询。所以像这样的查询:

select * from user 
where CRM_Status='pending' and dateOfTermination < DATE_ADD(CURDATE(), INTERVAL 1 DAY)

被禁止。在同一查询中多次调用order-by方法会引发错误。您一次只能使用一个order-by方法。

要解决此问题,您可以创建一个额外的密钥以使其成为可能。 “帖子”可以包含databaseReference.child("user-posts") .child(myUserId) .orderByChild("starCount") .orderByChild("timestamp"); starCount的组合键。您的新密钥应如下所示:

timestamp

然后,您可以根据此新密钥查询数据库。