2016-08-31 3 views
0

だから私は、サインアップ手順中にユーザー名が存在するかどうかをチェックしています。唯一の問題は私のchildupdates2ユーザ名フォルダに追加されていないということですか?最初childUpdateが正しく追加されるが、第2 childUpdate2はありません。それはちょうど私のユーザー名フォルダを更新しません?updateChildrenは子を更新していませんか?

final DatabaseReference Userref = FirebaseDatabase.getInstance().getReference(); 
    username_check_query = Userref.child("Usernames").orderByChild("username").equalTo(mUsernameView.getText().toString()); 
    usernameChildEvent = new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if(dataSnapshot.getValue() == null){ 

       ScoreClass scoreClass = new ScoreClass(10000, mUsernameView.getText().toString()); 
       Map<String, Object> scoredata = scoreClass.toMap(); 
       Map<String, Object> childUpdates = new HashMap<>(); 
       childUpdates.put("Users/" + user.getUid(), scoredata); 
       Userref.updateChildren(childUpdates); 


       Username username = new Username(mUsernameView.getText().toString()); 
       Map<String, Object> userdata = username.toMap(); 
       Map<String, Object> childUpdates2 = new HashMap<>(); 
       childUpdates2.put("/Usernames/" + user.getUid(), userdata); 
       Userref.updateChildren(childUpdates2); 
      } 
      else { 
        // other code 
      } 
      username_check_query.removeEventListener(this); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }; 
username_check_query.addListenerForSingleValueEvent(usernameChildEvent); 

ここにデータベース構造があります。

database structure

私が間違って何をしているのですか?

+0

あなたがfirebaseの実際のデータベース構造は、ここで見ることができます:

Userref.updateChildren(childUpdates2, new DatabaseReference.CompletionListener() { @Override public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { if (databaseError == null) { Log.i(TAG, "onComplete: success"); } else { Log.w(TAG, "onComplete: fail", databaseError.toException()); } } }); 

username.toMap()が非空のマップを作成することを確認してください? –

+0

@ VishalPatoliya構造を追加しました。 – LazyDev

+0

なぜモデルクラスを使用していないのですか? –

答えて

2

私はあなたの結果を再現することはできません。更新の状態が何であるかを確認するために完了リスナーを追加します。

Map<String, Object> userdata = username.toMap(); 
    if (userdata.isEmpty()) { 
     Log.e(TAG, "Oops! No data"); 
    } else { 
     Log.i(TAG, "userdata=" + userdata); 
    } 
+0

グッド一つの答えを参照してください。将来の参照のため :[アンドロイドに値を書き込むときにエラーを検出](http://stackoverflow.com/documentation/firebase/5548/how-do-i-listen-for-errors-when-accessing-the-database# t = 201608311732467227622) –

関連する問題