多级递归修正

This commit is contained in:
2024-11-07 02:51:59 +08:00
parent 9fa5007ac4
commit 37156568ed

View File

@@ -25,15 +25,15 @@ func LoadItem(requestedFields []ast.Selection) (data []string) {
for _, field := range requestedFields { for _, field := range requestedFields {
fieldAST, _ := field.(*ast.Field) fieldAST, _ := field.(*ast.Field)
if funk.Contains(items, fieldAST.Name.Value) { if funk.Contains(items, fieldAST.Name.Value) {
data = append(data, fieldAST.Name.Value) name := fieldAST.Name.Value
name = strings.ToUpper(string(name[0])) + name[1:]
data = append(data, name)
for _, str := range LoadItem(fieldAST.SelectionSet.Selections) { for _, str := range LoadItem(fieldAST.SelectionSet.Selections) {
str = strings.ToUpper(string(str[0])) + str[1:] data = append(data, name+"."+str)
data = append(data, fieldAST.Name.Value+"."+str)
} }
} }
if fieldAST.Name.Value == "list" { if fieldAST.Name.Value == "list" {
for _, str := range LoadItem(fieldAST.SelectionSet.Selections) { for _, str := range LoadItem(fieldAST.SelectionSet.Selections) {
str = strings.ToUpper(string(str[0])) + str[1:]
data = append(data, str) data = append(data, str)
} }
} }
@@ -638,7 +638,12 @@ func NewSchema(config Config) (graphql.Schema, error) {
}, },
Resolve: func(p graphql.ResolveParams) (interface{}, error) { Resolve: func(p graphql.ResolveParams) (interface{}, error) {
img := Image{ID: p.Args["id"].(int)} img := Image{ID: p.Args["id"].(int)}
if err := db.First(&img).Error; err != nil { query := db.Limit(1)
for index, item := range LoadItem(p.Info.FieldASTs[0].SelectionSet.Selections) {
fmt.Println(index, item)
query = query.Preload(item)
}
if err := query.First(&img).Error; err != nil {
log.Println("获取图片失败", err) log.Println("获取图片失败", err)
return nil, err return nil, err
} }