多级递归修正
This commit is contained in:
@@ -25,15 +25,15 @@ func LoadItem(requestedFields []ast.Selection) (data []string) {
|
||||
for _, field := range requestedFields {
|
||||
fieldAST, _ := field.(*ast.Field)
|
||||
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) {
|
||||
str = strings.ToUpper(string(str[0])) + str[1:]
|
||||
data = append(data, fieldAST.Name.Value+"."+str)
|
||||
data = append(data, name+"."+str)
|
||||
}
|
||||
}
|
||||
if fieldAST.Name.Value == "list" {
|
||||
for _, str := range LoadItem(fieldAST.SelectionSet.Selections) {
|
||||
str = strings.ToUpper(string(str[0])) + str[1:]
|
||||
data = append(data, str)
|
||||
}
|
||||
}
|
||||
@@ -638,7 +638,12 @@ func NewSchema(config Config) (graphql.Schema, error) {
|
||||
},
|
||||
Resolve: func(p graphql.ResolveParams) (interface{}, error) {
|
||||
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)
|
||||
return nil, err
|
||||
}
|
||||
|
Reference in New Issue
Block a user