ここにあなたの最善のアプローチは、トランザクションになります。
しかし、いつものように、Firebaseはアレイの使用を推奨する理由はたくさんあります。
たとえば、同じ値をfavorites
に2回指定することはできますか?各ユーザーは各お気に入りを1回だけ指定できる可能性があります。その場合の次の質問の1つは、このFirebaseアレイで重複する値を防ぐにはどうすればいいのでしょうか?そして、そのことへの答えは、再び取引になるでしょう。
トランザクションは、アプリケーションのパフォーマンスとスケーラビリティを損ねます。また、あなたのアプリがオフラインのユーザーのときに動作しないことを意味します。トランザクションが必要なときはいつでも、トランザクションを必要としない同じユースケースを達成するデータモデルがあるかどうか疑問に思っています。コレクションのキーに値を入れるのと同じくらい簡単かもしれお気に入りを格納するために
:
favorites:
"bs41": true
"uie": true
"pts4": true
は今、あなたはそれぞれの好みの値は一度しか存在し得ることを自動的に保証を持っています。新しいアイテムを追加することも非常に簡単です:ref.child("favorites").child("newfav").setValue(true)
。
私が共有したデータモデルは、Firebaseのセットをモデル化する方法です。私の経験では、配列/リストを持ち、新しい項目を追加する前に特定の値が含まれているかどうかを確認しているときに、しばしばセットを使用する必要があります。