graphql-go/graphqlを使ってるんだけど、
組織図みたいなツリー状のデータを扱いたくって、何も考えずに
var ElementType = graphql.NewObject(graphql.ObjectConfig{ Name: "Element", Fields: graphql.Fields{ "name": &graphql.Field{ Type: graphql.String, }, "children": &graphql.Field{ Type: graphql.NewList(ElementType), }, }, })
みたいなものを定義しようとすると循環参照エラーになってしまう。
で、前は急いでたこともあって諦めてフラットな形で拾ってフロントでがんばるようなことをしたんだけど、実はちゃんとやり方があったっぽく
var ElementType = graphql.NewObject(graphql.ObjectConfig{ Name: "Element", Fields: graphql.Fields{ "name": &graphql.Field{ Type: graphql.String, }, }, }) func init() { ElementType.AddFieldConfig("children", &graphql.Field{ Type: graphql.NewList(ElementType), }) }
みたいな具合に予め再帰部分抜きのTypeを定義した上でinit内でAddFieldConfig
を使って追加すれば良いみたい。