2016-12-09 8 views
0

私は、自動生成された主キーを持つデータベースを持っています。 ここをクリックしてください:firebaseリアルタイムデータベースの場所を更新するには?

data 
------0 
-----------id 
-----------name 
------1 
-----------id 
-----------name 

などです。

私はプライマリキーを知らず、特定のIDで名前を更新したいと思います。どうやってやるの?そのため

+0

....それはあなたを助けることを願っていますクラスを作成します自分のID、そのIDの下に保管しているのはなぜですか?このような構造では、あなたの更新は 'ref.child(id).setValue(...)'のように簡単になります。 –

+0

私はちょうどjsonファイルを取得し、firebaseにアップロードしました。そしてfirebaseは私のデータのために独自のidを追加しました – d0pestar

+0

データモデリングに関しては、JSONファイルをアップロードする以上のことをすることをお勧めします。たとえば、[NoSQLデータモデリング](https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)と[Firebase for SQL開発者](https ://www.youtube.com/playlist?list = PL-K7zZEsYLlP-k-RKFa7RyNPa9_wCH2s)、 –

答えて

1

最初のアイテムが自分を持っている場合は

public class User { 

int id; 
String name; 

public User(int id, String name){ 
    this.id = id; 
    this.name = name; 
} 

public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 
} 

が次にあなたが

DatabaseReference dbRef = firebaseDatabase.getReference("YOUR_DB_NAME"); 
Query query = dbRef 
      .orderByChild("id") 
      .equalTo("ID_OF_THE_USER"); 
    query.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) { 
       Log.d(TAG, dataSnapshot1.getKey() + " " + dataSnapshot1.getValue(Profile.class) 
         .toString()); 
       updateUser(dataSnapshot1.getKey(),"ID_OF_THE_USER", "New_Name"); 
       } 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

private void updateUser(DatabaseReference db,int key, String id, String name,) { 
    User user = new User(id, name); 
    Map<String, Object> postValues = post.toMap(); 
    Map<String, Object> childUpdates = new HashMap<>(); 
    childUpdates.put("/data/" + key, postValues); 
    db.updateChildren(childUpdates); 
} 

を更新したいDBオブジェクトが

+0

ありがとうございます。それは本当に私を助けました。 – d0pestar

関連する問題