Android Firebase数据库查询就像twitter上的热门推文
我在firebase数据库上使用google github。有人评论,如果用户喜欢别人的评论,他们可以给一个明星(喜欢)。另一方面,我想做一个页面,它只显示顶部的评论,这是上升。如果我使用此查询: 下面给出了示例代码-:Android Firebase数据库查询就像twitter上的热门推文,android,firebase,twitter,firebase-realtime-database,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.firebas
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中有一个时间戳,Firebase实时数据库不支持链式查询。这样的查询:
databaseReference.child("user-posts")
.child(myUserId)
.orderByChild("starCount")
.orderByChild("timestamp");
starCount_timestamp
这是禁止的。在同一查询中多次调用order by方法会引发错误。一次只能使用一个order by方法
要解决这个问题,您可以创建一个额外的关键点,使之成为可能。“post”可以有一个组合键,用于starCount
和timestamp
。您的新密钥应如下所示:
databaseReference.child("user-posts")
.child(myUserId)
.orderByChild("starCount")
.orderByChild("timestamp");
starCount_timestamp
然后,您可以根据这个新键查询数据库。它的工作非常完善,例如,如果starCounts相同,它将使用时间戳进行排序