java - 如何确保多次单击单个按钮不会重复结果?

标签 java android firebase transactions google-cloud-firestore

我在帖子上开发了一个点赞按钮,当它点击时,每次都会加1。我只想一旦用户单击该按钮,它就只计数到一,但是当多次单击该按钮时,同一用户的计数会增加,这不应该发生?

我只想由同一用户单击一次、更新一次计数器,不再需要了

我该如何进行?

我正在使用firestore中的事务来完成操作

private void transactionlPostUserl1() {

        Log.d(TAG,"hello4");

        final DocumentReference PostUserRef = db.collection("users").document(PostAuthorID);


        db.runTransaction(new Transaction.Function<Void>() {
            @Override
            public Void apply(Transaction transaction) throws FirebaseFirestoreException {



                DocumentSnapshot documentSnapshot2 = transaction.get(PostUserRef);
                long l11 = documentSnapshot2.getLong("l2");
                { transaction.update(PostUserRef, "l2", l11+1);


                    return null;
                }


            }
        }).addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void result) {





                Log.d(TAG, "Transaction success: " + result);
            }
        })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {

                        Log.w(TAG, "Transaction failure.", e);
                    }
                });



    }

最佳答案

保存对每个帖子点赞的每个用户的 ID,然后检查该人是否已经点赞?然后你就可以统计点赞的人数了。

关于java - 如何确保多次单击单个按钮不会重复结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58060260/

相关文章:

java - @Value 字段、Lombok 和构造函数注入(inject)的最佳实践?

java - 东方数据库。设置 ConflictStrategy 抛出异常

android - recreate() 可以给一个过渡动画吗?

android - onCharacteristicWrite 和 onNotificationSent 被调用得太快 - 如何获取实际传出数据速率?

android - getReference() 与 getChild()

java - jTable 数据库重复值

Java - List<Node> 两个值

android - macOS Sierra 上 Android Studio 2.3.3 中的虚拟 SD 卡损坏错误

java - 如何在 firebase 实时数据库中保存文档引用

iOS Firebase/Firestore 权限被拒绝