プロさんのおうち   ~プログラムのサンプル置き場~


Cloud Firestoreのコレクション値取得


Javaを利用して、Firestoreのコレクション値を取得しました。

今回は、SpringBoot2を利用しています。

ソースコード

以下がコンストラクタのソースコード(初期化部分)になります。

今回はローカルで動作させたため、権限用のjsonファイルから初期化しています。


public SampleController() throws Exception {

    // initialize firestore.
    InputStream json = new FileInputStream("権限用のjsonファイルパス");
    GoogleCredentials credentials = GoogleCredentials.fromStream(json);
    FirebaseOptions options = new FirebaseOptions.Builder().setCredentials(credentials).build();
    FirebaseApp.initializeApp(options);
}
				

また、以下がコレクション取得部分のソースコード(Controller)になります。


@RequestMapping(value = "/", method = RequestMethod.POST)
public ModelAndView getCollection(@RequestParam("collectionName") String collectionName, ModelAndView mv)
        throws Exception {

    // get collection.
    Firestore db = FirestoreClient.getFirestore();
    ApiFuture chatFutures = db.collection(collectionName).get();
    QuerySnapshot chatSnapshot = chatFutures.get();
    List chatDocuments = chatSnapshot.getDocuments();

    List displayDocuments = new ArrayList<>();
    for (QueryDocumentSnapshot chatDocument : chatDocuments) {
        DocumentContents contents = new DocumentContents(chatDocument.getId(), chatDocument.get("text").toString());
        displayDocuments.add(contents);
    }
    // add display objects.
    mv.addObject("documents", displayDocuments);

    // set display view name.
    mv.setViewName("index");
    return mv;
}
				

DocumentContentsクラスは、Documentの値を設定するための単なるクラスです。

入力パラメータとして受け取ったコレクション名に基づいて、コレクションの値を取得します。

最後に、表示部分になります(Thymeleafテンプレートを利用しています)。


<table th:if="${documents} != null" border="1">
    <tr>
        <th>ID</th>
        <th>値</th>
    </tr>
    <tr th:each="obj:${documents}">
        <td th:text="${obj.id}"></td>
        <td th:text="${obj.text}"></td>
    </tr>
</table>
				

また、Gradle用のbuild.gradleは以下のようになっています。


plugins {
    id 'org.springframework.boot' version '2.1.5.RELEASE'
    id 'java'
}

apply plugin: 'io.spring.dependency-management'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'com.google.firebase:firebase-admin:5.10.0'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

				
参考URL


メニューに戻る


CopyRight 2019 株式会社PUreatio