rework how references are found in Document.Populate
				
					
				
			This commit is contained in:
		
							parent
							
								
									f56df39be8
								
							
						
					
					
						commit
						0ebe3a2a3a
					
				
							
								
								
									
										11
									
								
								document.go
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								document.go
									
									
									
									
									
								
							| @ -301,9 +301,9 @@ func (d *Document) Populate(fields ...string) { | |||||||
| 		for _, field := range fields { | 		for _, field := range fields { | ||||||
| 			// 0 = fieldname, 1 = typename, 2 = bson name
 | 			// 0 = fieldname, 1 = typename, 2 = bson name
 | ||||||
| 
 | 
 | ||||||
| 			r, _ := readFields(field, cm) | 			r, refOk := cm.references[field] | ||||||
| 
 | 
 | ||||||
| 			if r.exists { | 			if refOk { | ||||||
| 				// get self
 | 				// get self
 | ||||||
| 				// get ptr
 | 				// get ptr
 | ||||||
| 				// find
 | 				// find
 | ||||||
| @ -328,8 +328,11 @@ func (d *Document) Populate(fields ...string) { | |||||||
| 					asIDocument.markPopulated(field) | 					asIDocument.markPopulated(field) | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| 				tmp1 = populate(r, refColl.collection, rawDoc, field, reflect.ValueOf(d.self).Interface()) | 				v := reflect.ValueOf(d.self) | ||||||
| 				d.self = tmp1 | 				tt := v.Elem().Type() | ||||||
|  | 				tmp1 = populate(r, refColl.collection, rawDoc, field, d.self) | ||||||
|  | 				nv := reflect.NewAt(tt, v.UnsafePointer()) | ||||||
|  | 				nv.Elem().Set(reflect.ValueOf(tmp1).Elem()) | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user