Google App Engine データストアは、Web アプリケーションに強力なデータ ストレージ ソリューションを提供し、柔軟性と拡張性を提供します。場合によっては、動的プロパティ、つまり事前に宣言されていないプロパティを使用してデータを保存する必要があることがあります。これは、Google App Engine の PropertyLoadSaver インターフェイスを利用することで Go で実現できます。
PropertyLoadSaver インターフェイスを使用すると、エンティティのプロパティをデータストアにロードおよび保存する方法を定義できます。このインターフェイスを実装すると、動的なプロパティ処理を制御できるようになります。
Go App Engine プラットフォームは、PropertyLoadSaver インターフェイスを実装する PropertyList タイプを提供します。 PropertyList は基本的にプロパティのスライスであり、プロパティを動的に追加および削除できます。
PropertyList を使用して動的プロパティを持つエンティティを作成するには、次の手順に従います。
import "google.golang.org/appengine/datastore" // Create a PropertyList to hold the dynamic properties. props := datastore.PropertyList{ datastore.Property{Name: "time", Value: time.Now()}, datastore.Property{Name: "email", Value: "[email protected]"}, } // Create an incomplete key for the new entity. k := datastore.NewIncompleteKey(ctx, "DynEntity", nil) // Save the entity using the PropertyList. key, err := datastore.Put(ctx, k, &props)
このコード スニペットは、「DynEntity」種類と 2 つの動的プロパティ「time」と「email」を持つエンティティを作成します。 PropertyList はエンティティの値として保存されます。
必要に応じて、独自の PropertyLoadSaver を実装することもできます。 「DynEnt」というカスタム タイプを使用した例を次に示します。
import "google.golang.org/appengine/datastore" type DynEnt map[string]interface{} func (d *DynEnt) Load(props []datastore.Property) error { for _, p := range props { (*d)[p.Name] = p.Value } return nil } func (d *DynEnt) Save(props []datastore.Property, err error) error { for k, v := range *d { props = append(props, datastore.Property{Name: k, Value: v}) } return err }
この DynEnt タイプは、次に示すように、動的プロパティを持つエンティティを格納するために使用できます。
import "google.golang.org/appengine/datastore" // Create a DynEnt with dynamic properties. d := DynEnt{"email": "[email protected]", "time": time.Now()} // Create an incomplete key for the new entity. k := datastore.NewIncompleteKey(ctx, "DynEntity", nil) // Save the entity using the DynEnt. key, err := datastore.Put(ctx, k, &d)
以上がGo を使用して Google App Engine データストアの動的プロパティを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。