私は、Goで書かれたAppEngine(標準環境)アプリケーションでFirestoreを使用しようとしています。 I "Getting Started with Cloud Firestore"ガイド次てきたし、私の地元のdevのサーバー上でそれを実行するときに正常に動作し、簡単な例を実装するためにfirestore packageドキュメントを使用している。AppEngine Go標準環境でCloud Firestoreを使用すると、AppEnglineで実行中にrpcエラーが返される
しかし、私はアプリを展開し、展開されたバージョンの呼び出しを試してみてくださいこれが正常に動作のdevのサーバー上で、前述のようにそうそこ
func init() {
http.HandleFunc("/test", testHandler)
}
type testData struct {
TestData string `firestore:"myKey,omitempty"`
}
func testHandler(w http.ResponseWriter, r *http.Request) {
ctx := appengine.NewContext(r)
var firestoreClient *firestore.Client
var firebaseApp *firebase.App
var err error
conf := &firebase.Config{ProjectID: "my-project"}
firebaseApp, err = firebase.NewApp(ctx, conf)
if err != nil {
fmt.Fprintf(w, "Failed to create a new firestore app: %v", err)
return
}
firestoreClient, err = firebaseApp.Firestore(ctx)
if err != nil {
fmt.Fprintf(w, "Failed to create a new firestore client: %v", err)
return
}
data := testData{"my value"}
_, err = firestoreClient.Collection("testCollection").Doc("testDoc").Set(ctx, data)
if err != nil {
fmt.Fprintf(w, "Failed to create a firestore document: %v", err)
return
}
firestoreClient.Close()
fmt.Fprint(w, "Data stored in Firestore successfully")
}
:DocumentRef.Set()
にこの問題を再現する私のコードでエラー
rpc error: code = Unavailable desc = all SubConns are in TransientFailure
で失敗します返されたページにはテキストData stored in Firestore successfully
が含まれています。
デプロイされたコードを実行すると、代わりにFailed to create a firestore document: rpc error: code = Unavailable desc = all SubConns are in TransientFailure
が得られます。なぜこのエラーが発生するのですか?どのように回避できますか?
'firestoreClient'はhttpクライアントを使用しますか? urlfetch.Client(ctx)によって作成されたhttpクライアントを渡し/割り当てる必要がありますか? –