2017-10-11 107 views
1

據我所知 - 爲了檢查document是否存在,我應該使用get函數並查看它是否存在。Firestore - 檢查正在更新的文檔是否存在

我的問題是關於在更新時檢查 - 是否有可能?(考慮到發生更新時document可能會消失)。

我試圖更新一個空的document,我得到一個錯誤,說文檔不存在,但我認爲這可能不是檢查這個問題的成功方法。

回答

1

有幾種方式將數據寫入到雲公司的FireStore:

  • 更新() - 變化領域上已經存在的文件。如果文檔不存在,則失敗。
  • set() - 覆蓋文檔中的數據,創建文檔(如果文檔尚不存在)。如果您只想部分更新文檔,請使用SetOptions.merge()
  • create() - 僅在服務器端SDK中可用,與set()類似,但在文檔已存在時失敗。

所以你只需要爲你的用例使用正確的操作。如果你想不知道,如果它存在,或者不更新的文件,你想用一個set(),像這樣的merge()選項(本例中是Java):

// Update one field, creating the document if it does not already exist. 
Map<String, Object> data = new HashMap<>(); 
data.put("capital", true); 

db.collection("cities").document("BJ") 
     .set(data, SetOptions.merge()); 
+0

你能用Java寫這個嗎?實際上,我正在使用Firebase。 –

+0

@TalBarda完成。 –

+0

謝謝。我會問你在上面的答案下問了什麼:我可以檢測操作是否因文檔不存在而失敗嗎? –

3

如果您只想在文檔存在的情況下執行更新,那麼使用update正是要做的事情。你觀察到的行爲是你可以依靠的行爲。

我們專門設計了這個功能,以便可以執行文檔的部分更新,而無需創建不完整的文檔,否則您的代碼無法處理。

+0

所以我應該閱讀onFailure處的消息,比檢測是否因爲文檔不存在而發生?有沒有一種很好的方法來檢測更新是否因此而失敗? –

+0

@TalBarda見下文。您應該使用適當的操作寫入數據。 –

相關問題