我需要解决一个问题。我想要一个云函数,我需要遍历每个具有uniqueID的帖子,并且我想根据TotalReactions的值对这些uniqueID进行排序。对我来说更生动,假设第一篇文章的totalReactions = 5,第二篇文章的totalReactions = 6,那么我需要另一个RealTimeDatabase" PostArranged"它按降序对它们进行排序,因此第二个具有Total Reaction的帖子将首先出现,然后跟随TotalReaction较少的那个... 以下是我的firebase实时数据库的样子:
Posts
-L29TD-nsUYRu3wYcCQl
Caption: "First Screenshot"
CurrentUserReaction: "notreacted"
Image: "https://firebasestorage.googleapis.com/v0/b/nep..."
ReactingUser
<user-id>:"1"
<user-id>:"2"
Time: "13:40:54"
TotalReactions: "2"
Unique: "-L29TD-nsUYRu3wYcCQl"
UserPhoto: "https://firebasestorage.googleapis.com/v0/b/nep..."
Username: "Me"
任何帮助将不胜感激..
答案 0 :(得分:0)
这不是做你想做的事情的好方法。在这种方法中,每次添加反应时都必须将数据库分类到另一个“ArrangedDatabase”,这将以高频率发生。因此,使用云功能执行此操作将非常昂贵。
而是使用 orderByChild(), orderByKey(), orderByValue()在查询数据时对数据进行排序。
答案 1 :(得分:0)
对于想要在Firebase提供的RecyclerViewAdapter中执行此操作的任何人,都可以轻松完成...当您传递这4个参数时。不要传递数据库引用,而是创建一个新查询,并确保通过OrderByChild(),OrderByValue()或您想要订购的任何内容对该事物进行排序......即 就我而言,我会做这样的事情:
q = mDatabaseReference.orderByChild("TotalReactions");
并将q作为参数传递给FirebaseAdapter,如下所示:
FirebaseRecyclerAdapter<Posts,PostViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Posts, PostViewHolder>(
Posts.class, R.layout.each_post_layout , PostViewHolder.class, q
) {
。 }