【问题标题】:sort post on the basis of likes using firebase database query使用firebase数据库查询根据喜欢对帖子进行排序
【发布时间】: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();
            }
        });
    }

更新:这是我更新的数据库截图:

~

【问题讨论】:

    标签: android firebase firebase-realtime-database firebase-authentication


    【解决方案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,嘿伙计,我知道如何添加计数器。现在请告诉我我是如何正确查询的。
    • 这个问题还没有回答,你说要创建一个类似的计数器,我现在这样做是数据库排序的主要问题。我要求的。
    • 我添加了一些相关信息。但是请不要像以前那样改变你的问题,因为现在我的回答的第一部分在以后有人来这里时没有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    相关资源
    最近更新 更多