每次將其他檔案添加到集合中時,我都想更新 firestore 檔案中的一組 ID。
如果檔案尚不存在(用于創建集合),請使用我要添加的 ID 作為該陣列的第一個值創建檔案。
所以我想嘗試每次更新檔案并捕獲可能的錯誤,即“未找到某些請求的檔案”并在這種情況下創建檔案
正如你在這里看到的
void addDocument(Map<String, dynamic> docData, String docId) {
final db = FirebaseFirestore.instance;
db.collection(docId.trim().toLowerCase()).add(docData).then((value) {
try {
db.collection(docId).doc("doclist").update({
"list": FieldValue.arrayUnion([docData["id"]]),
});
} catch (_) {
Map<String, List<String>> listdata = {
"list": [docData["id"]],
};
db.collection(docId).doc("doclist").set(data);
}
});
}
所以我想知道這是否是一種“干凈”的方式,是否可以使用 try/catch。
或者我應該使用 doc.exists getter 檢查檔案是否存在?由于此功能將經常使用,因此請求數量會增加一倍
uj5u.com熱心網友回復:
try catch應該用于處理例外,這些例外通常不屬于您的正常流程控制的一部分。
例如,在這種情況下,您可以使用set它的合并選項來創建或更新檔案:
db.collection(docId).doc("doclist").set({
"list": FieldValue.arrayUnion([docData["id"]]),
}, SetOptions(merge: true));
如果它尚不存在,這將使用陣列中的單個專案創建檔案,否則會將專案添加到預先存在的檔案的陣列中。有關這方面的更多資訊,請參閱有關設定檔案的檔案中的第二個示例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/527659.html
標籤:Google Cloud Collective 扑火力基地镖谷歌云火库试着抓
上一篇:在useEffect中使用異步函式-如何獲取[[promiseresult]]-不使用.then()
下一篇:角度字串變數未系結到模板
