在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()
方法来查看会话集合中是否存在某个会话,并相应地拒绝该操作。