Java 如何在Firestore上检查空文档?
因此,我试图删除Java 如何在Firestore上检查空文档?,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,因此,我试图删除Firebase Firestore上的一个文档,该文档不包含任何字段。但是,在删除文档之前,如何检查文档是否不包含任何数据 要解决这个问题,您应该从数据库中以地图的形式获取数据: yourDocumentReference.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() { @Override public void onComplete(@NonNull
Firebase Firestore
上的一个文档,该文档不包含任何字段。但是,在删除文档之前,如何检查文档是否不包含任何数据
要解决这个问题,您应该从数据库中以地图的形式获取数据:
yourDocumentReference.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
Map<String, Object> map = document.getData();
if (map.size() == 0) {
Log.d(TAG, "Document is empty!");
} else {
Log.d(TAG, "Document is not empty!");
}
}
}
}
});
yourDocumentReference.get().addOnCompleteListener(新的OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
DocumentSnapshot document=task.getResult();
if(document.exists()){
Map=document.getData();
if(map.size()==0){
Log.d(标记“文档为空!”);
}否则{
Log.d(标记“文档不是空的!”);
}
}
}
}
});
只检查文档是否存在并不意味着该文档为空。文档可以存在(如在屏幕截图中),但没有设置属性。因为Cloud Firestore数据库中的每个文档都是一个映射,所以可以使用
size()
方法查看文档是否为空。为了检查文档传入的
是否为空,可以检查存储对象的键数。如果存储了0个键,则可以删除文档
Typescript中的示例代码:
const doc = await firestore()
.collection('Collection')
.doc('incoming')
.get();
const numberOfKeys = Object.keys(doc.data()).length;
if (numberOfKeys === 0) {
await firestore()
.collection('Collection')
.doc('incoming')
.delete();
我正在使用whereEqualsTo,但您可以使用任何查询:
FirebaseFirestore db = FirebaseFirestore.getInstance();
Query docRef = db.collection("rewards").whereEqualTo("adminId", Common.currentUser.getContact());
docRef.addSnapshotListener((value, error) -> {
if (value.getDocuments().size() == 0) {
Snackbar snackbar = Snackbar.make(findViewById(R.id.content), "Empty", Snackbar.LENGTH_LONG);
snackbar.show();
}
它对我有用