APIを使用してデータを取得するためのデータベース・マネージャーAPIを作成する基本概念。私はstrcutsのインスタンスのデータを取得するためにGORMを使用しています。したがって、テーブルを表す300〜400の構造体があります。Golangデータベース・マネージャーのAPI概念、型アサーションのエラー
type Users struct {
ID int64
Name string
}
type Categories struct {
ID int64
Category string
}
私はAPIエンドポイントのparamを通じて得るもの、テーブル名によって構造体の正しいインスタンスを返すような関数を実装して次のステップ。
func GetModel(model string) interface{} {
switch model {
case "users":
return Users{}
case "categories"
return Categories{}
}
return false
}
1つのフィールドだけがDBである操作構造体があるとします。 GORM db.Last(& users)関数を使用したいGetLast()メソッドなどのメソッドがあります。
func (o Operations) GetLast(model string) interface{} {
modelStruct := GetModel(model)
.
.
.
return o.DB.Last(&modelStruct)
}
これは私が知らない点です。現在の解決策は動作していません。このケースではインタフェース{}なので、タイプアサーションを作成する必要がありますmore info in this question。タイプアサーションは次のようになります。
このソリューションは機能しますが、この場合はモジュール性が失われます。私はreflect.TypeOf(modelStruct)
を使用しようとしていますが、reflect.TypeOfの結果がreflect.Typeであり、golangタイプではないため動作しません。