在Firestore上,我尝试根据不同集合中另一个文档的存在将文档添加到一个集合中。例如,如果某个会话在我的会话集合中存在,则可以将出勤记录添加到出勤集合中。这可以在Cloud Firestore上实现吗?

最佳答案

您可以在用户端通过在exists()对象上调用DocumentSnapshot方法来解决此问题,以检查session集合中是否存在特定文档,如下所示:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
DocumentReference docRef = rootRef.collection("session").document(docId);
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document.exists()) {
                //Add attendance record to the attendance collection
            } else {
                Log.d(TAG, "No such document");
            }
        }
    }
});


为了百分百确定,您还可以使用安全规则,就像@Gerardo在其答案中提到的那样,在这里您可以再次使用exists()方法来查看会话集合中是否存在某个会话,并相应地拒绝该操作。

09-10 13:02