程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在 Firestore 中检查查询?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在 Firestore 中检查查询??

开发过程中遇到如何在 Firestore 中检查查询?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在 Firestore 中检查查询?的解决方法建议,希望对你解决如何在 Firestore 中检查查询?有所启发或帮助;

附上图片供 Firestore 参

如何在 Firestore 中检查查询?

尝试检查 firestore 中的查询以了解用户是否已发送或收到请求,并可以相应地执行任务并更改按钮的文本。

firebaseFirestore.collection("users").document(userID).collection("request").whereEqualTo("userID",otherUserID).get().addOnCompleteListener(new OnCompleteListener<querySnapshot>() {
        @OverrIDe
        public voID onComplete(@NonNull Task<querySnapshot> task) {
            if(task.issuccessful()){
                List<documentSnapshot> document = task.getResult().getdocuments();
                if(document.contains("received")){
                    current_state="req_received";
                    send.setText("Accept request");
                }else if(document.contains("sent")){
                    current_state = "req_sent";
                    send.setText("Cancel request");
                }
            }
        }
    });

以下代码用于发送或取消请求,它工作正常,但是当我返回另一个活动并再次返回时,按钮的文本更改为发送请求,该请求必须保留以取消请求,因为请求已经已发送。

 send.setonClickListener(new VIEw.onClickListener() {
                   @OverrIDe
        public voID onClick(VIEw v) {


            if (userID.equals(otherUserID)) {
                Toast.makeText(ProfileActivity.this,"CAnnot send request to your own",Toast.LENGTH_SHORT).show();
                return;
            }
            //--------Not frIEnds.....

            send.setEnabled(false);
            if (current_state.equals("not_frIEnds")) {

                FirebaseFirestore firebaseFirestore = FirebaseFirestore.geTinstance();
                //  String userID = firebaseAuth.getCurrentUser().getUID();
                Map<String,String> profile = new HashMap<>();
                profile.put("userID",otherUserID);

                firebaseFirestore.collection("users").document(userID).collection("request")
                        .document("sent").set(profilE).addOnCompleteListener(new OnCompleteListener<VoID>() {
                    @OverrIDe
                    public voID onComplete(@NonNull Task<VoID> task) {
                        if (task.issuccessful()) {
                            FirebaseFirestore firebaseFirestore = FirebaseFirestore.geTinstance();
                            //  String userID = firebaseAuth.getCurrentUser().getUID();
                            Map<String,String> profile = new HashMap<>();
                            profile.put("userID",userID);

                            firebaseFirestore.collection("users").document(otherUserID).collection("request")
                                    .document("received").set(profilE).addOnCompleteListener(new OnCompleteListener<VoID>() {
                                @OverrIDe
                                public voID onComplete(@NonNull Task<VoID> task) {
                                    if (task.issuccessful()) {

                                        send.setEnabled(true);
                                        current_state = "req_sent";
                                        send.setText("Cancel request");

                                        Toast.makeText(ProfileActivity.this,"success",Toast.LENGTH_SHORT).show();
                                    }
                                }
                            });
                        } else {
                            Toast.makeText(ProfileActivity.this,"Failed sending request",Toast.LENGTH_SHORT).show();

                        }
                    }
                });
            }

            //-------- Cancel request.......

            if (current_state.equals("req_sent")) {
                FirebaseFirestore firebaseFirestore = FirebaseFirestore.geTinstance();
                Map<String,Object> profile = new HashMap<>();
                //  String userID = firebaseAuth.getCurrentUser().getUID();
                profile.put("userID",FIEldValue.delete());

                firebaseFirestore.collection("users").document(userID).collection("request")
                        .document("sent").update(profilE).addOnCompleteListener(new OnCompleteListener<VoID>() {
                    @OverrIDe
                    public voID onComplete(@NonNull Task<VoID> task) {
                        if (task.issuccessful()) {
                            FirebaseFirestore firebaseFirestore = FirebaseFirestore.geTinstance();
                            //  String userID = firebaseAuth.getCurrentUser().getUID();
                            Map<String,Object> profile = new HashMap<>();
                            profile.put("userID",FIEldValue.delete());

                            firebaseFirestore.collection("users").document(otherUserID).collection("request")
                                    .document("received").update(profilE).addOnCompleteListener(new OnCompleteListener<VoID>() {
                                @OverrIDe
                                public voID onComplete(@NonNull Task<VoID> task) {
                                    if (task.issuccessful()) {

                                        send.setEnabled(true);
                                        current_state = "not_frIEnds";
                                        send.setText("Send request");

                                        Toast.makeText(ProfileActivity.this,"request canceled","Failed request canceled",Toast.LENGTH_SHORT).show();

                        }
                    }
                });
            }


        }
    });

}

}

解决方法

正如您所确认的,如果错误仅在于比较部分,则像下面这样更改查询迭代可能会解决问题。

if (task.issuccessful()) {
     for (QueryDocumentSnapshot document : task.getResult()) {
               if(document.getId().contains("received")){
                    current_state="req_received";
                    send.setText("Accept request");
                    // do pending stuffs or break the loop here
                } else if(document.getId().contains("sent")){
                    current_state = "req_sent";
                    send.setText("Cancel request");
                    // do pending stuffs or break the loop here
                }
     }
}

https://firebase.google.com/docs/firestore/query-data/queries

大佬总结

以上是大佬教程为你收集整理的如何在 Firestore 中检查查询?全部内容,希望文章能够帮你解决如何在 Firestore 中检查查询?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:如何在