アプリを再起動すると、firebaseがデータを置き換えました

ウィルソンクン

私のアプリは、ユーザーがログインして「ゲーム開始」ボタンをクリックするたびにgameKeyを生成します。変数「gameKey」は次のコードで生成され、gameKeyの下にデータを保存します。問題は、アプリを再起動するたびに、Firebaseがデータツリー全体を生成された新しいgameKeyに置き換えたことです。

私がやりたいのは、アプリを実行するたびに古いデータを上書きせずに、新しいgameKeyを生成することです。誰かが私の問題を指摘してくれたらとても嬉しいです、どうもありがとう!

    final FirebaseDatabase database = FirebaseDatabase.getInstance();
    UserId = mAuth.getCurrentUser().getUid();
    DatabaseReference currentUserId = database.getReference("user").child(UserId);

    gameKey = currentUserId.child("gameinfo").push().getKey();

    Map<String, Object> game = new HashMap<>();
    game.put(gameKey, new Game(tv_player1name.getText().toString(), tv_player2name.getText().toString(), tv_player3name.getText().toString(), tv_playerMename.getText().toString(), gameMode, gameDate ));
    currentUserId.child("gameInfo").updateChildren(game);

Firebase Data:
  - user
      - 5xGKRXeHgThQy70lduPEp3mosTj1   (UID)
            - gameInfo
                  -LLV0H0ZJwYT5M42Obfb
                       gameDate: "20180903_232015"      
                       gameType: "HKMJ"
                       player1name: "peter"
                       player2name: "jenny"
                       player3name: "john"
                       player4name: "wilson"

     *This is the gameKey generated: "LLV0H0ZJwYT5M42Obfb"

これはあなたの提案の後のコードです:

  final FirebaseDatabase database = FirebaseDatabase.getInstance();
  DatabaseReference currentUserId = database.getReference("user").child(UserId);
  currentUserId.setValue(new User(mAuth.getCurrentUser().getEmail(), UserPic));
  gameKey = currentUserId.child("gameinfo").push().getKey();

  Map<String, Object> game = new HashMap<>();

  game.put(gameKey, new Game(tv_player1name.getText().toString(), tv_player2name.getText().toString(), tv_player3name.getText().toString(), tv_playerMename.getText().toString(), gameMode, gameDate )); 

  currentUserId.child("gameInfo").child(gameKey).updateChildren(game);

また、この行を置き換えてみました

 game.put(gameKey, new Game(tv_player1name.getText().toString(), tv_player2name.getText().toString(), tv_player3name.getText().toString(), tv_playerMename.getText().toString(), gameMode, gameDate )); 

この行で、同じ結果

 Game game = new Game(tv_player1name.getText().toString(), tv_player2name.getText().toString(), tv_player3name.getText().toString(), tv_playerMename.getText().toString(), gameMode, gameDate );

助けてくれてありがとう!

FirebaseScreenShot

アレックスマモ

これを解決するには、次のコード行を変更してください。

currentUserId.child("gameInfo").updateChildren(game);

currentUserId.child("gameInfo").child(gameKey).updateChildren(game);

基本的にランダムキーを生成していますが、まったく使用していません。したがって、上記のコードに示されているようgameKeyに、child()メソッドにを渡す必要があります。

編集:更新プロセス全体を解決するには、次のコード行を使用してください。

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference gameInfoRef = rootRef.child("user").child(uid).child("gameInfo");
String key = gameInfoRef.push().getKey();
Map<String, Object> game = new HashMap<>();
game.put("player1name", tv_player1name.getText().toString());
game.put("player2name", tv_player2name.getText().toString());
game.put("player3name", tv_player3name.getText().toString());
game.put("playerMename", tv_playerMename.getText().toString());
game.put("gameMode", gameMode);
game.put("gameDate", gameDate);
gameInfoRef.child(key).updateChildren(game);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

アプリを再起動した後、SQLiteデータが消えました

分類Dev

アプリケーションにコアデータをアップロードしましたが、移行せずに新しいコアデータを置き換えたいと思います。アップルはそれを許可しますか?

分類Dev

ストアドプロシージャで動的SQLを置き換えると、問題が発生します

分類Dev

向きを変えるとビデオが再起動します

分類Dev

コプロセッサーのデプロイ:hbaseを再起動せずにjarを置き換えると有効になりますか?

分類Dev

編集をクリックするとアンカータグのテキストが置き換えられましたが、一度に1つのアイテムを置き換えますか?

分類Dev

ADBを使用してアプリのSQLiteデータベースを置き換えます

分類Dev

FlaskアプリをHerokuにデプロイすると、ループの再起動でスタックします

分類Dev

THREE.Group()の子を置き換えると、グループの回転と平行移動が停止します

分類Dev

画像をクリックしてiframesrcに置き換えると、間違ったデータ属性が渡されます

分類Dev

シリーズ(またはデータフレーム)の0を置き換えると、Falseも置き換えられますか?

分類Dev

アプリを再起動するとNSInvalidArgumentExceptionが発生します

分類Dev

アプリを置き換えた後、SQLiteデータは保持されますか

分類Dev

不要な依存関係を削除するか、スターターを置き換えることで、JavaSpringアプリのサイズを縮小します

分類Dev

Firebaseデータベースのデータを更新中にアプリが再起動する

分類Dev

アプリを再起動すると、部屋のデータが失われます

分類Dev

別のボタンがクリックされたときにボタンを永続的に有効にする。アプリも再起動します

分類Dev

ユーザーがコンピューターを再起動したときにアンインストールスクリプトを実行する

分類Dev

特定の子のデータを置き換えようとしています(Firebaseデータベース)

分類Dev

ForEach-Objectを使用してパラメーターを置き換えようとすると、Powershellスクリプトが失敗します

分類Dev

送信ボタンがクリックされたときにボタンをロードするgif画像に置き換える方法次に成功したらフォームを削除して成功メッセージに置き換えます

分類Dev

文字列を<span>タグに置き換えると、MutationObserverが無限ループを作成します

分類Dev

Android Firebaseプッシュ通知をクリックすると、アプリが再起動します

分類Dev

プレースホルダーを動的データに置き換えます

分類Dev

異なるタイプのデータを置き換えると、テーブルフィールドの桁が変化します

分類Dev

Firebaseが以前のデータを置き換えることによって子を更新する

分類Dev

アプリケーションを再起動するたびにSQLiteデータベースが削除されました

分類Dev

文字列クエリを置き換える関数を作成すると、ストアドプロシージャの速度が低下します

分類Dev

データが送信されたときに、AndroidアプリのFirebaseからServerValue.Timestampを取得します

Related 関連記事

  1. 1

    アプリを再起動した後、SQLiteデータが消えました

  2. 2

    アプリケーションにコアデータをアップロードしましたが、移行せずに新しいコアデータを置き換えたいと思います。アップルはそれを許可しますか?

  3. 3

    ストアドプロシージャで動的SQLを置き換えると、問題が発生します

  4. 4

    向きを変えるとビデオが再起動します

  5. 5

    コプロセッサーのデプロイ:hbaseを再起動せずにjarを置き換えると有効になりますか?

  6. 6

    編集をクリックするとアンカータグのテキストが置き換えられましたが、一度に1つのアイテムを置き換えますか?

  7. 7

    ADBを使用してアプリのSQLiteデータベースを置き換えます

  8. 8

    FlaskアプリをHerokuにデプロイすると、ループの再起動でスタックします

  9. 9

    THREE.Group()の子を置き換えると、グループの回転と平行移動が停止します

  10. 10

    画像をクリックしてiframesrcに置き換えると、間違ったデータ属性が渡されます

  11. 11

    シリーズ(またはデータフレーム)の0を置き換えると、Falseも置き換えられますか?

  12. 12

    アプリを再起動するとNSInvalidArgumentExceptionが発生します

  13. 13

    アプリを置き換えた後、SQLiteデータは保持されますか

  14. 14

    不要な依存関係を削除するか、スターターを置き換えることで、JavaSpringアプリのサイズを縮小します

  15. 15

    Firebaseデータベースのデータを更新中にアプリが再起動する

  16. 16

    アプリを再起動すると、部屋のデータが失われます

  17. 17

    別のボタンがクリックされたときにボタンを永続的に有効にする。アプリも再起動します

  18. 18

    ユーザーがコンピューターを再起動したときにアンインストールスクリプトを実行する

  19. 19

    特定の子のデータを置き換えようとしています(Firebaseデータベース)

  20. 20

    ForEach-Objectを使用してパラメーターを置き換えようとすると、Powershellスクリプトが失敗します

  21. 21

    送信ボタンがクリックされたときにボタンをロードするgif画像に置き換える方法次に成功したらフォームを削除して成功メッセージに置き換えます

  22. 22

    文字列を<span>タグに置き換えると、MutationObserverが無限ループを作成します

  23. 23

    Android Firebaseプッシュ通知をクリックすると、アプリが再起動します

  24. 24

    プレースホルダーを動的データに置き換えます

  25. 25

    異なるタイプのデータを置き換えると、テーブルフィールドの桁が変化します

  26. 26

    Firebaseが以前のデータを置き換えることによって子を更新する

  27. 27

    アプリケーションを再起動するたびにSQLiteデータベースが削除されました

  28. 28

    文字列クエリを置き換える関数を作成すると、ストアドプロシージャの速度が低下します

  29. 29

    データが送信されたときに、AndroidアプリのFirebaseからServerValue.Timestampを取得します

ホットタグ

アーカイブ