使用firebase数据库查询根据喜欢对帖子进行排序
Posted
技术标签:
【中文标题】使用firebase数据库查询根据喜欢对帖子进行排序【英文标题】:sort post on the basis of likes using firebase database query 【发布时间】:2021-08-28 16:17:20 【问题描述】:我正在开发一个简单的应用程序,您可以在其中检索 viewpager 中的视频而不是列表视图,并且用户也可以喜欢视频。
但现在我想根据最喜欢的方式对所有视频进行排序。
这是我的数据库截图 -
她是我制作视频适配器的代码,我从中检索视频
代码-
videoView.setVideoPath(obj.getUrl());
title.setText(obj.getTitle());
desc.setText(obj.getDesc());
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
@Override
public void onPrepared(MediaPlayer mediaPlayer)
pbar.setVisibility(View.GONE);
mediaPlayer.start();
);
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
@Override
public void onCompletion(MediaPlayer mediaPlayer)
mediaPlayer.start();
);
更新:这是我更新的数据库截图:
~
【问题讨论】:
【参考方案1】:Firebase 实时数据库查询只能根据存储在数据库中的值对数据进行排序。无法对计算的内容进行排序,例如您的情况下 Likes/$postid
节点下的子元素数量。
常见的解决方法是将喜欢的数量也存储在数据库中,例如作为LikeCount
属性,然后按那个排序。
您可以安全地让客户端写入其相似/不相似并通过以下方式递增/递减计数器:
使用increment()
操作以原子方式执行更改。
并使用安全规则来确保每个增量都与新的赞齐头并进。
有关此示例,请在此处查看我的答案:Using Firebase Security Rules, how can I secure a node that has transactions run on it?
一旦您存储了LikeCount
,您就可以按using a query 对其进行排序。比如:
DatabaseReference postsRef = FirebaseDatabase.getInstance().getReference("Posts");
Query query = postsRef.orderBy("LikeCount");
query.addValueEventListener(...
【讨论】:
@Frankn van Puffelen,嘿伙计,我知道如何添加计数器。现在请告诉我我是如何正确查询的。 这个问题还没有回答,你说要创建一个类似的计数器,我现在这样做是数据库排序的主要问题。我要求的。 我添加了一些相关信息。但是请不要像以前那样改变你的问题,因为现在我的回答的第一部分在以后有人来这里时没有意义。以上是关于使用firebase数据库查询根据喜欢对帖子进行排序的主要内容,如果未能解决你的问题,请参考以下文章