2017-10-11 9 views
1

私が知る限り - documentが存在するかどうかを確認するには、get関数を使用して、それが有効かどうかを確認してください。Firestore - 更新中の文書が存在するかどうか確認してください

私の質問は更新中のチェックについてです - 可能でしょうか?(アップデート時にdocumentがなくなる可能性があることを考慮してください)。

私は空のdocumentを更新しようとしましたが、ドキュメントが存在しないと言うエラーが出ましたが、これはこれを確認するうまい方法ではないと思います。

答えて

1

クラウドFirestoreにデータを書き込むために、いくつかの方法があります。

  • 更新() - すでに存在する文書上のフィールドを変更するには。文書が存在しない場合は失敗します。
  • set() - 文書内のデータを上書きし、文書がまだ存在しない場合は上書きします。部分的に文書を更新する場合は、SetOptions.merge()を使用します。
  • - set()と同様のサーバー側SDKでのみ使用できますが、ドキュメントが既に存在する場合は失敗します。

したがって、使用するケースに応じて適切な操作をするだけです。

// 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で記述できますか?私は実際にAndroid用Firebaseを使用しています。 –

+0

@タルバーダ出来ました。 –

+0

ありがとうございます。私は上記の答えの下で私が尋ねたことをあなたに尋ねます:文書が存在しないために操作が特に失敗したかどうかを検出できますか? –

3

文書が存在する場合にのみ更新を実行する場合は、updateを使用してください。あなたが観察した行動は、あなたが信頼できる行動です。

私たちはこれを特別に設計しました。これは、他の方法では処理できない不完全なドキュメントを作成することなく、ドキュメントの部分的な更新を実行できるようにするためです。

+0

だから私はONFAILUREでメッセージを読み、必要があります:あなたはそれが存在しているかいないかどうかを知ることなく、文書を更新したい場合は、(この例では、Javaのためである)、このようなmerge()オプションでset()を使用したいです文書が存在しないために発生したかどうかを検出するよりも?このため更新が特に失敗したかどうかを検出する良い方法はありますか? –

+0

@ TalBarda下記を参照してください。適切な操作を使用してデータを書き込む必要があります。 –

関連する問題