如何从一个片段中删除数据,这些片段应该反映在google firebase中的其他片段中

问题描述 投票:0回答:1

我有3个片段Edit_profile,Group_formation,Available_students编辑配置文件有一个集合用户(由卷号组成),该集合显示在available_students片段中。我希望如果在组形成(插入卷)中插入一些用户数据并在提交后这些数据不应该显示在available_students片段下但是那些也不应该从用户集合中删除。是否可能?

Available_students片段

 mfirestore.collection("users").addSnapshotListener(new EventListener<QuerySnapshot>() {
            @Override
            public void onEvent(@javax.annotation.Nullable QuerySnapshot queryDocumentSnapshots, @javax.annotation.Nullable FirebaseFirestoreException e) {
                if (e != null) {
                    Log.d(TAG, "Error" + e.getMessage());
                }

                for (DocumentChange doc : queryDocumentSnapshots.getDocumentChanges()) {


                    if (doc.getType() == DocumentChange.Type.ADDED) {
                        Users users = doc.getDocument().toObject(Users.class);
                        usersList.add(users);
                        userListAdapter.notifyDataSetChanged();
                    }
                }
            }
        });
        return v;

GroupFormation片段

public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    view.findViewById(R.id.submit).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String roll1=ET1.getText().toString();
            String roll2=ET2.getText().toString();
            String roll3=ET3.getText().toString();
            String roll4=ET4.getText().toString();
            String roll5=ET5.getText().toString();

            Map<String,String> usermap= new HashMap<>();
            usermap.put("Student1",roll1);
            usermap.put("Student2",roll2);
            usermap.put("Student3",roll3);
            usermap.put("Student4",roll4);
            usermap.put("Student5",roll5);

           mfirestore.collection("Groups").add(usermap).addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
               @Override
               public void onSuccess(DocumentReference documentReference) {
                   Toast.makeText(getActivity(), "registered", Toast.LENGTH_SHORT).show();
               }
           }).addOnFailureListener(new OnFailureListener() {
               @Override
               public void onFailure(@NonNull Exception e) {
              String error=e.getMessage();
                   Toast.makeText(getActivity(), "error"+error, Toast.LENGTH_SHORT).show();
               }
           });
        }
    });
}
java android firebase google-cloud-firestore
1个回答
0
投票

使用给定的代码示例从firestore读取列表:

db.collection("cities")
    .whereEqualTo("state", "CA")
    .addSnapshotListener(EventListener<QuerySnapshot> { snapshots, e ->
        if (e != null) {
            Log.w(TAG, "listen:error", e)
            return@EventListener
        }

        for (dc in snapshots!!.documentChanges) {
            when (dc.type) {
                DocumentChange.Type.ADDED -> Log.d(TAG, "New city: ${dc.document.data}")
                DocumentChange.Type.MODIFIED -> Log.d(TAG, "Modified city: ${dc.document.data}")
                DocumentChange.Type.REMOVED -> Log.d(TAG, "Removed city: ${dc.document.data}")
            }
        }
    })

查看查询快照之间查询结果的实际更改通常很有用,而不是简单地使用整个查询快照。例如,您可能希望在添加,删除和修改单个文档时维护缓存。

链接:View changes between snapshots in Firestore

如果您认为这个答案有用,请投票....

© www.soinside.com 2019 - 2024. All rights reserved.