Rumah > Artikel > pembangunan bahagian belakang > Penciptaan Pelanggan Firestore dalam Enjin Apl Google: Pelanggan Tunggal atau Setiap Permintaan?
Corak untuk Penciptaan Pelanggan
Di Google App Engine, pengesyoran umum adalah untuk menggunakan semula firestore.Instance pelanggan untuk berbilang invokasi. Walau bagaimanapun, sama ada pelanggan tunggal atau pelanggan setiap permintaan adalah lebih sesuai bergantung pada versi App Engine khusus yang digunakan:
App Engine Standard dengan Go 1.11 Runtime:
Dengan masa jalan Go 1.11, sebarang konteks boleh digunakan untuk memulakan firestore.Client. Ini membenarkan penciptaan klien dalam fungsi main() atau mana-mana fungsi lain yang menggunakan konteks latar belakang. Panggilan API kemudiannya boleh dibuat dalam pengendali permintaan menggunakan konteks permintaan.
package main var client *firestore.Client func init() { var err error client, err = firestore.NewClient(context.Background()) // handle errors as needed } func handleRequest(w http.ResponseWriter, r *http.Request) { doc := client.Collection("cities").Doc("Mountain View") doc.Set(r.Context(), someData) // rest of the handler logic }
Standard Enjin Aplikasi dengan Masa Jalanan Go Sebelum 1.11:
Dalam masa jalan Go yang lebih lama , Enjin Apl menguatkuasakan penggunaan konteks berskop kepada permintaan HTTP untuk semua tika perpustakaan pelanggan. Akibatnya, firestore baharu. Pelanggan perlu dibuat setiap permintaan:
func main() { // Setup server s := &server{db: NewFirestoreClient()} // Setup Router http.HandleFunc("/people", s.peopleHandler()) // Starts the server to receive requests appengine.Main() } func (s *server) peopleHandler() http.HandlerFunc { // pass context in this closure from main? return func(w http.ResponseWriter, r *http.Request) { ctx := r.Context() // appengine.NewContext(r) but should it inherit from background somehow? s.person(ctx, 1) // ... } } func (s *server) person(ctx context.Context, id int) { // what context should this be? _, err := s.db.Client.Collection("people").Doc(uid).Set(ctx, p) // handle client results } func NewFirestoreClient() *Firestore { ctx := context.Background() client, err := firestore.NewClient(ctx, os.Getenv("GOOGLE_PROJECT_ID")) if err != nil { log.Fatal(err) } return &Firestore{ Client: client, } }
Dengan mengikut corak penciptaan klien yang sesuai berdasarkan versi Enjin Aplikasi, anda boleh mengoptimumkan prestasi dan penggunaan sumber aplikasi Firestore anda.
Atas ialah kandungan terperinci Penciptaan Pelanggan Firestore dalam Enjin Apl Google: Pelanggan Tunggal atau Setiap Permintaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!