【Cloud Firestore】取得したデータをオブジェクトにマッピングする
お世話になってます、hosochinです
今回は
「Cloud Firestore でオブジェクトとしてデータを取得する」
です
Cloud Firestoreについて
Cloud Firestore はGoogleのFirebaseで提供されてるNoSQLのデータベースです
リアルタイムリスナーを介してクライアントアプリ間でデータを同期してくれてるので、更新があった場合にリアルタイムで反映してくれます
そこそこ無料で使えるのもいいですね👍
Cloud Firestoreからデータを取得する
Cloud Firestoreには、「document」と「collection」という概念が存在します
document = ファイル、collection = ディレクトリってイメージです
今回は以下のような構成とします
さっそくこのuser1とuser2の中身を取得したいと思います
ここらへん参考にやってきます
public void findUser() {
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("users")
.get()
.addOnCompleteListener(task -> {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
}
});
}
- 実行結果
user1 => {name=taro, id=0001}
user2 => {name=jiro, id=002}
いい感じに取得できましたね
ただ、idとnameというフィールドを持ったUserクラスで取得できたらもっと便利ですよね
次は今回のタイトルにある通りオブジェクトにマッピングして取得したいと思います
- User.javaを作ります
public class User {
private String id;
private String name;
public User() {
}
public User(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "id=" + this.id + ", name=" +name;
}
}
- データ取得部分
public void findUser() {
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("users")
.get()
.addOnCompleteListener(task -> {
List<User> users = new ArrayList<>();
for (QueryDocumentSnapshot document : task.getResult()) {
users.add(document.toObject(User.class));
}
Log.d(TAG, users.get(0).toString());
Log.d(TAG, users.get(1).toString());
});
}
- 実行結果
id=0001, name=taro
id=002, name=jiro
期待通りの結果になりました🍺
ディスカッション
コメント一覧
まだ、コメントがありません