前提・実現したいこと
Cloud Firestoreのローカルエミュレータを使いたい
コマンド実行
$ export FIRESTORE_EMULATOR_HOST=localhost:8812
$ gcloud beta emulators firestore start --host-port=localhost:8812
この順でエミュレータを立ち上げています
発生している問題・エラーメッセージ
{"time":"2020-06-11T10:19:11.789139+09:00","id":"","remote_ip":"::1","host":"localhost:8080","method":"GET","uri":"/","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36","status":404,"error":"code=404, message=Not Found","latency":152536,"latency_human":"152.536µs","bytes_in":0,"bytes_out":24} 2020/06/11 10:19:23 rpc error: code = NotFound desc = The project testing does not exist or it does not contain an active Cloud Datastore or Cloud Firestore database. Please visit http://console.cloud.google.com to create a project or https://console.cloud.google.com/datastore/setup?project=testing to add a Cloud Datastore or Cloud Firestore database. Note that Cloud Datastore or Cloud Firestore always have an associated App Engine app and this app must not be disabled. exit status 1 (base) takeuchikaoru@takeuchikaorunoMacBook-Pro training_2020_kaoru_takeuchi %
該当のソースコード
main
1package main 2 3import ( 4 "github.com/labstack/echo" 5 "github.com/labstack/echo/middleware" 6 "github.com/topgate/training_2020_kaoru_takeuchi/handler" 7) 8 9func main() { 10 e := echo.New() 11 e.Use(middleware.Logger()) 12 e.Use(middleware.Recover()) 13 e.GET("/user/:id",handler.GetUser) 14 e.POST("/user",handler.CreateUser) 15 e.PUT("/user/:id",handler.UpdateUser) 16 e.DELETE("/user/:id",handler.DeleteUser) 17 e.Logger.Fatal(e.Start(":8080")) 18}
user
1func CreateUser(c echo.Context) error{ 2 uuid := uuid.New().String() 3 userModel := &model.User{ 4 ID: uuid, 5 Email: c.FormValue("email"), 6 PassWord: c.FormValue("password"), 7 UserName: c.FormValue("name"), 8 } 9 Repository.Add(*userModel) 10 //同じEmailの確認とDB書き込み処理 11 12 return c.JSON(http.StatusOK, userModel) 13}
Repository
1kage Repository 2 3import ( 4 "context" 5 "cloud.google.com/go/firestore" 6 "log" 7) 8 9 10func Add(usermodel model.User) { 11 12 ctx := context.Background() 13 14 // firebase projectIDは適当でOK 15 store, err := firestore.NewClient(ctx, "testing") 16 if err != nil { 17 log.Fatal(err) 18 } 19 _, _, err = store.Collection("users").Add(ctx, usermodel) 20 if err != nil { 21 log.Fatal(err) 22 } 23}
試したこと
projectIDをtestingからGCPのプロジェクトIDにすると動きました。
テーブルも生成され正常動作します。
しかし、ローカルでやろうとするとエラーが吐き先に進めません。
ご教授お願いいたします。
補足情報(FW/ツールのバージョンなど)
Go version1.14.3
エディター GoLand
テストツールPostman
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/30 10:09