From e0878250266bedb7dfb0165425a5a14bcc0cb075 Mon Sep 17 00:00:00 2001 From: Nikita Tokarchuk Date: Sun, 6 Dec 2020 01:06:07 +0100 Subject: [PATCH] Rework load array function --- mongox/database/loadarray.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/mongox/database/loadarray.go b/mongox/database/loadarray.go index b73c301..d52e8b7 100644 --- a/mongox/database/loadarray.go +++ b/mongox/database/loadarray.go @@ -70,13 +70,12 @@ func (d *Database) LoadArray(target interface{}, filters ...interface{}) (err er return } - for i = 0; result.Next(ctx); { + for i = 0; result.Next(ctx); i++ { var elem interface{} - if targetSliceV.Len() == i { + if i == targetSliceV.Len() { value := reflect.New(targetSliceElemT.Elem()) - err = result.Decode(value.Interface()) elem = value.Interface() err = composed.OnCreate().Invoke(ctx, elem) @@ -84,9 +83,12 @@ func (d *Database) LoadArray(target interface{}, filters ...interface{}) (err er return } - if err == nil { - targetSliceV = reflect.Append(targetSliceV, value) + err = result.Decode(elem) + if err != nil { + return } + + targetSliceV = reflect.Append(targetSliceV, value) } else { elem = targetSliceV.Index(i).Interface() @@ -98,17 +100,15 @@ func (d *Database) LoadArray(target interface{}, filters ...interface{}) (err er } err = result.Decode(elem) - } - if err != nil { - return + if err != nil { + return + } } err = composed.OnDecode().Invoke(ctx, elem) if err != nil { return } - - i++ } targetSliceV = targetSliceV.Slice(0, i)