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 {
 | 
			
		||||
			// 0 = fieldname, 1 = typename, 2 = bson name
 | 
			
		||||
 | 
			
		||||
			r, _ := readFields(field, cm)
 | 
			
		||||
			r, refOk := cm.references[field]
 | 
			
		||||
 | 
			
		||||
			if r.exists {
 | 
			
		||||
			if refOk {
 | 
			
		||||
				// get self
 | 
			
		||||
				// get ptr
 | 
			
		||||
				// find
 | 
			
		||||
@ -328,8 +328,11 @@ func (d *Document) Populate(fields ...string) {
 | 
			
		||||
					asIDocument.markPopulated(field)
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				tmp1 = populate(r, refColl.collection, rawDoc, field, reflect.ValueOf(d.self).Interface())
 | 
			
		||||
				d.self = tmp1
 | 
			
		||||
				v := reflect.ValueOf(d.self)
 | 
			
		||||
				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