多级递归修正
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user