Java 如何检查Cloud Firestore中任何文档的集合中是否存在值(例如名称)?

Java 如何检查Cloud Firestore中任何文档的集合中是否存在值(例如名称)?,java,android,firebase,google-cloud-firestore,android-database,Java,Android,Firebase,Google Cloud Firestore,Android Database,我想检查我的Cloud Firestore中任何文档的集合中是否存在一个值,例如(名称:“John”),因为如果存在,我不想创建一个具有该名称的新文档(在本例中为“John”)。如何检查名称是否存在?假设您在Firestore中有一个名为“用户”的集合,要检查名称为“John”的用户是否已经存在,请使用以下代码行: FirebaseFirestore rootRef = FirebaseFirestore.getInstance(); CollectionReference usersRef =

我想检查我的Cloud Firestore中任何文档的集合中是否存在一个值,例如(名称:“John”),因为如果存在,我不想创建一个具有该名称的新文档(在本例中为“John”)。如何检查名称是否存在?

假设您在Firestore中有一个名为“用户”的集合,要检查名称为“John”的用户是否已经存在,请使用以下代码行:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference usersRef = rootRef.collection("users");
Query queryUsersByName = usersRef.whereEqualTo("name", "John");
queryUsersByName.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            for (DocumentSnapshot document : task.getResult()) {
                if (document.exists()) {
                    Log.d("TAG", "name already exists");
                } else {
                    //Do what you need to do
                }
            }
        } else {
            Log.d("TAG", "Error getting documents: ", task.getException());
        }
    }
});
FirebaseFirestore rootRef=FirebaseFirestore.getInstance();
CollectionReference usersRef=rootRef.collection(“用户”);
查询queryUsersByName=usersRef.whereEqualTo(“名称”、“约翰”);
queryUsersByName.get().addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(DocumentSnapshot文档:task.getResult()){
if(document.exists()){
Log.d(“标签”、“名称已存在”);
}否则{
//做你需要做的事
}
}
}否则{
Log.d(“标记”,“获取文档时出错:”,task.getException());
}
}
});

如果“用户”集合中已存在名为“John”的用户,则上述代码的结果将是一条日志语句,其中显示消息“name ready exists”。

假设您在Firestore中有一个名为“users”的集合,要检查名为“John”的用户是否已存在,请使用以下代码行:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference usersRef = rootRef.collection("users");
Query queryUsersByName = usersRef.whereEqualTo("name", "John");
queryUsersByName.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            for (DocumentSnapshot document : task.getResult()) {
                if (document.exists()) {
                    Log.d("TAG", "name already exists");
                } else {
                    //Do what you need to do
                }
            }
        } else {
            Log.d("TAG", "Error getting documents: ", task.getException());
        }
    }
});
FirebaseFirestore rootRef=FirebaseFirestore.getInstance();
CollectionReference usersRef=rootRef.collection(“用户”);
查询queryUsersByName=usersRef.whereEqualTo(“名称”、“约翰”);
queryUsersByName.get().addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(DocumentSnapshot文档:task.getResult()){
if(document.exists()){
Log.d(“标签”、“名称已存在”);
}否则{
//做你需要做的事
}
}
}否则{
Log.d(“标记”,“获取文档时出错:”,task.getException());
}
}
});

如果“用户”集合中已存在名为“John”的用户,则上述代码的结果将是一条带有消息“name ready exists”的日志语句。

除了@Alex answer,要知道名称是否不存在,请在迭代之前添加一条if语句,以检查task.getResult().isEmpty()是否存在,如果为空,则表示没有具有该名称的用户。除了@Alex answer,要知道该名称是否不存在,请在迭代之前添加一条if语句,以检查task.getResult().isEmpty()是否为空,如果为空,则表示没有具有该名称的用户。