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