如何获取单个documentSnapshot的DocumentChange对象?我想在when语句中使用文档更改的类型。使用querySnapshot很容易,但是我不知道如何解决这个问题,以监听单个文档中的更改。
val uid = FirebaseAuth.getInstance().uid
val documentReference = FirebaseFirestore.getInstance().collection("users").document(uid!!)
documentReference.addSnapshotListener{
documentSnapshot, e ->
when (documentSnapshot**what code needs to be here**.type) {
DocumentChange.Type.ADDED -> {}
DocumentChange.Type.MODIFIED -> {}
DocumentChange.Type.REMOVED -> {}
}
}
听单个文档时没有DocumentChange.Type
。相反,您会得到一个DocumentSnapshot
,其中包含该文档的状态。
您可以查看文档并跟踪这是否是您的侦听器的第一个回调,从而得出所发生的情况:
if (snapshot.exists()) {
if (isFirst) Log.i(TAG, "ADDED")
else Log.i(TAG, "MODIFIED")
}
else {
if (isFirst) Log.i(TAG, "NOOP")
else Log.i(TAG, "REMOVED")
}