😆

[Android Studio] Realtime Database にデータを書き込む(上書き・文字置き換え)

2022/06/12に公開

はじめに

Javaコード上でデータをDBにセットした際に、DB上のJSONでは構造がどのように変化するのか調査したのでその時のメモ。
詳細は、以下サイトに記載されているようだが、容量つかめなかったので実験しました。
https://firebase.google.com/docs/database/android/start?hl=ja
https://firebase.google.com/docs/database/android/read-and-write?hl=ja


今回使用したコード

ReadAndWriteSnippets.java
public void writeNewUser(String userId, String name, String email) {
     User user = new User(name, email);

    mDatabase.child("users").child(userId).setValue(user);
}
User.java
@IgnoreExtraProperties
public class User {

    public String username;
    public String email;

    public User(String username, String email) {
        this.username = username;
        this.email = email;
    }
}

初期Jsonコード

db.json
https://~~~~.firebaseio.com/:null


データ書き込み

MainActivity.java
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ReadAndWriteSnippets readAndWriteSnippets = new ReadAndWriteSnippets();
        readAndWriteSnippets.writeNewUser("1", "one", "one@gmail.com");
    }
db.json
https://~~~~.firebaseio.com/
  user
	  1
	    email:"one@gmail.com"
	    username:"one"


データ書き込み

MainActivity.java
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ReadAndWriteSnippets readAndWriteSnippets = new ReadAndWriteSnippets();
        readAndWriteSnippets.writeNewUser("1", "one", "one@gmail.com");
        readAndWriteSnippets.writeNewUser("2", "two", "two@gmail.com");    // 追加
    }
db.json
https://~~~~.firebaseio.com/
  user
	  1
	    email:"one@gmail.com"
	    username:"one"
	    
      2
        email:"two@gmail.com"
        username:"two"



データ書き込み

MainActivity.java
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ReadAndWriteSnippets readAndWriteSnippets = new ReadAndWriteSnippets();
        readAndWriteSnippets.writeNewUser("1", "two", "two@gmail.com");    // 変更
        readAndWriteSnippets.writeNewUser("2", "two", "two@gmail.com");
    }
db.json
https://~~~~.firebaseio.com/
  user
	  1
	    email:"two@gmail.com"
	    username:"two"
	   
      2
        email:"two@gmail.com"
        username:"two"



データ書き込み(db.jsonの内容を一度全削除)

MainActivity.java
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ReadAndWriteSnippets readAndWriteSnippets = new ReadAndWriteSnippets();
        readAndWriteSnippets.writeNewUser("1", "one", "one@gmail.com");    // 変更
        readAndWriteSnippets.writeNewUser("1", "two", "two@gmail.com");    // 変更
    }
db.json
https://~~~~.firebaseio.com/
  user
	  1
        email:"two@gmail.com"
        username:"two"

一つの子(ここではuserID)に対して、1つのデータセットしか登録できない模様。
(上書きされたっぽい)


Discussion