diff --git a/model.go b/model.go index 13a7209..cab079d 100644 --- a/model.go +++ b/model.go @@ -7,7 +7,6 @@ import ( "go.mongodb.org/mongo-driver/v2/mongo" "go.mongodb.org/mongo-driver/v2/mongo/options" "reflect" - "unsafe" ) // Model - type which contains "static" methods like @@ -111,7 +110,12 @@ func (m *Model) Find(query interface{}, opts *options.FindOptionsBuilder) (*Quer op: OP_FIND_ALL, } q, err := m.FindRaw(query, opts) - idoc := (*DocumentSlice)(unsafe.Pointer(qqv.Elem().UnsafeAddr())) + //idoc := (*DocumentSlice)(qqv.Elem().UnsafePointer()) + idoc := make(DocumentSlice, 0) + for i := 0; i < qqv.Elem().Len(); i++ { + idoc = append(idoc, qqv.Elem().Index(i).Interface().(IDocument)) + } + if err == nil { rawRes := bson.A{} err = q.All(context.TODO(), &rawRes) @@ -125,7 +129,7 @@ func (m *Model) Find(query interface{}, opts *options.FindOptionsBuilder) (*Quer qq.reOrganize() err = nil } - for _, doc := range *idoc { + for _, doc := range idoc { doc.setModel(*m) } }