多级递归修正
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