Java 检查Firestore集合中是否存在文档
我有一个Firestore集合树,我计划只在其中存储一个文档。我想检查该集合是否包含该文档,如果包含,则检索该文档的id!有什么想法/想法吗 谢谢:)试试这个Java 检查Firestore集合中是否存在文档,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我有一个Firestore集合树,我计划只在其中存储一个文档。我想检查该集合是否包含该文档,如果包含,则检索该文档的id!有什么想法/想法吗 谢谢:)试试这个 FirebaseFirestore firestore = FirebaseFirestore.getInstance(); firestore.collection("users").whereEqualTo("user_uid", user.getUid()) .limit(1).get() .addOnComplet
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
firestore.collection("users").whereEqualTo("user_uid", user.getUid())
.limit(1).get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
boolean isEmpty = task.getResult().isEmpty();
}
}
});
FirebaseFirestore firestore=FirebaseFirestore.getInstance();
firestore.collection(“users”).whereEqualTo(“user\u uid”,user.getUid())
.limit(1.get())
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
布尔值isEmpty=task.getResult().isEmpty();
}
}
});
使文档结构如下所示:
collectionName(集合)->documentId(文档)->id=documentId(和其他字段)
现在进行查询:
FirebaseFirestore firestoreDatabase= FirebaseFirestore.getInstance();
firestoreDatabase.collection(COLLECTION_NAME)
.whereEqualTo(DOCUMENT_ID, documentId)
.get()
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
if (task.getResult().getDocuments().size() > 0)
// Here is your document with id
}
});
如果要根据特定文档的
文档id
检查该文档是否存在,请使用以下代码行:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
DocumentReference docIdRef = rootRef.collection("yourCollection").document(docId);
docIdRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
Log.d(TAG, "Document exists!");
} else {
Log.d(TAG, "Document does not exist!");
}
} else {
Log.d(TAG, "Failed with: ", task.getException());
}
}
});
FirebaseFirestore rootRef=FirebaseFirestore.getInstance();
DocumentReference docIdRef=rootRef.collection(“yourCollection”).document(docId);
docIdRef.get().addOnCompletListener(新的OnCompletListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
DocumentSnapshot document=task.getResult();
if(document.exists()){
Log.d(标记“文档存在!”);
}否则{
Log.d(标记“文档不存在!”);
}
}否则{
Log.d(标记“失败原因:”,task.getException());
}
}
});
如果没有文档id,则需要使用查询并根据特定属性的值查找该文档,如下所示:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference yourCollRef = rootRef.collection("yourCollection");
Query query = yourCollRef.whereEqualTo("yourPropery", "yourValue");
query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
FirebaseFirestore rootRef=FirebaseFirestore.getInstance();
CollectionReference yourCollRef=rootRef.collection(“yourCollection”);
Query Query=yourCollRef.whereEqualTo(“yourproperty”、“yourValue”);
query.get().addOnCompletListener(新的OnCompletListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(QueryDocumentSnapshot文档:task.getResult()){
Log.d(标记,document.getId()+“=>”+document.getData());
}
}否则{
Log.d(标记“获取文档时出错:”,task.getException());
}
}
});
DocumentReference docRef=db.collection(“items”).document(“您的id”);
docRef.addSnapshotListener(新的EventListener(){
@凌驾
public void OneEvent(DocumentSnapshot快照,FirestoreException fe){
if(snap.exists()){
//更新
}否则{
//插入
}
}
});
对于Java(非android)这对我不起作用,侦听器从未触发。但是docRef.get().get()存在();最后工作了。
DocumentReference docRef = db.collection("items").document("your_id");
docRef.addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(DocumentSnapshot snap, FirestoreException fe) {
if (snap.exists()) {
//update
} else {
//Insert
}
}
});