[英]How to simplify my code add/update Document in different sub-Collection in Firestore?
我的數據庫如下所示:
- Data
- Document
- Sub-Collection A
* Document A
- Sub-Collection B
* Document B
這是我的代碼:
我想添加/更新的東西:
HashMap<String, Object> isiData = new HashMap<>();
isiData.put("message", msg);
isiData.put("time", FieldValue.serverTimestamp());
添加/更新到文檔 A:
db.collection("Data")
.document("Document")
.collection("Sub-Collection A")
.document("Document A")
.set(isiData, SetOptions.merge())
.addOnCompleteListener(task -> {
// Success update document A
})
.addOnFailureListener(e -> {
// Failure
});
添加/更新到文檔 B:
db.collection("Data")
.document("Document")
.collection("Sub-Collection A")
.document("Document A")
.collection("Sub-Collection B")
.document("Document B")
.set(isiData, SetOptions.merge())
.addOnCompleteListener(task -> {
// Success update document B
})
.addOnFailureListener(e -> {
// Failure
});
我想做的是:
如何使用一次性代碼簡化對文檔 A 和文檔 B 的代碼添加/更新?
DocumentReference 的set(Object data)方法返回一個任務object。 話雖如此,您可以將兩個寫入操作保存到 Task 對象中,然后簡單地將它們傳遞給 Tasks 的whenAll(Task...<?> tasks)方法,如下面的代碼行所示:
Task<Void> firstTask = db.collection("Data")
.document("Document")
.collection("Sub-Collection A")
.document("Document A")
.set(isiData, SetOptions.merge())
Task<Void> secondTask = db.collection("Data")
.document("Document")
.collection("Sub-Collection A")
.document("Document A")
.collection("Sub-Collection B")
.document("Document B")
.set(isiData, SetOptions.merge())
Tasks.whenAll(firstTask, secondTask).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "The objects were successfully added.");
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.