【Go】firebase CloudFirestore接続、値取得まで
CloudFirestoreを使用したWebアプリを作る時に調べものがてら記述をしたので忘れないようにメモ…
大まかな工程は以下の通り
- FireBaseのコンソールにログイン
- 対象プロジェクトの秘密鍵を取得する
- go getコマンドでライブラリをインストール
- 秘密鍵を用いて接続、値取得
1.FireBaseのコンソールにログイン
コンソールにログインして対象のプロジェクトを選択

2.対象プロジェクトの秘密鍵を取得する
設定ボタンから「プロジェクト」の設定を選択

サービスアカウントタブを選択し、
Admin SDK 構成スニペット でGoを選択する。新しい秘密鍵の生成ボタンをクリックし、秘密鍵(jsonファイル)をダウンロードする

上記の画面で表示されているソースコードは後々使うのでコピーしておくと吉
3.go getコマンドでライブラリをインストール
以下のコマンドでプラグインをインストール
go get firebase.google.com/go
3.秘密鍵を用いて接続、値取得
クライアント接続
package main
import (
"fmt"
"golang.org/x/net/context"
firebase "firebase.google.com/go"
"google.golang.org/api/option"
)
func main() {
opt := option.WithCredentialsFile("key.json")
ctx := context.Background()
app, err := firebase.NewApp(ctx, nil, opt)
if err != nil {
fmt.Errorf("error initializing app: %v", err)
}
client, err := app.Firestore(ctx)
if err != nil {
fmt.Errorf("error initializing client: %v", err)
}
defer client.Close()
fmt.Println("Connection done")
}
値の取得の場合はこんな感じ
package main
import (
"fmt"
"golang.org/x/net/context"
firebase "firebase.google.com/go"
"google.golang.org/api/option"
)
func main() {
// クライアント接続
opt := option.WithCredentialsFile("key.json")
ctx := context.Background()
app, err := firebase.NewApp(ctx, nil, opt)
if err != nil {
fmt.Errorf("error initializing app: %v", err)
}
client, err := app.Firestore(ctx)
if err != nil {
fmt.Errorf("error initializing client: %v", err)
}
defer client.Close()
fmt.Println("Connection done")
// 値の取得
collection := client.Collection("コレクションID")
doc := collection.Doc("ドキュメントID")
field, err := doc.Get(ctx)
if err != nil {
fmt.Errorf("error get data: %v", err)
}
data := field.Data()
for key, value := range data {
fmt.Printf("key: %v, value: %v\n", key, value)
}
}