From 0ebe3a2a3a5290c1bfb5ead27d74c33ee9f8f8e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=98=99=E2=97=A6=20The=20Tablet=20=E2=9D=80=20GamerGirla?= =?UTF-8?q?ndCo=20=E2=97=A6=E2=9D=A7?= Date: Thu, 10 Apr 2025 16:09:40 -0400 Subject: [PATCH] rework how references are found in `Document.Populate` --- document.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/document.go b/document.go index 5c57ef7..addde2b 100644 --- a/document.go +++ b/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()) } } }