Skip to content

Commit a4fbdff

Browse files
authored
Merge pull request #45 from leancloud/query-first
🥅 Return error if Query.First not found object
2 parents 19c990a + ef5dbc0 commit a4fbdff

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

leancloud/query.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package leancloud
22

33
import (
44
"encoding/json"
5+
"errors"
56
"fmt"
67
"reflect"
78
"strings"
@@ -316,16 +317,21 @@ func objectQuery(query interface{}, objects interface{}, count bool, first bool,
316317
switch query.(type) {
317318
case *Query:
318319
decodedObjects, err := decodeArray(results, true)
320+
319321
if err != nil {
320322
return nil, err
321323
}
322324

325+
rDecodedObjects := reflect.ValueOf(decodedObjects)
326+
323327
if !first {
324-
if err := bind(reflect.ValueOf(decodedObjects), reflect.ValueOf(objects).Elem()); err != nil {
328+
if err := bind(rDecodedObjects, reflect.ValueOf(objects).Elem()); err != nil {
325329
return nil, err
326330
}
331+
} else if rDecodedObjects.Len() == 0 {
332+
return nil, errors.New("no matched object found")
327333
} else {
328-
if err := bind(reflect.ValueOf(decodedObjects).Index(0), reflect.ValueOf(objects).Elem()); err != nil {
334+
if err := bind(rDecodedObjects.Index(0), reflect.ValueOf(objects).Elem()); err != nil {
329335
return nil, err
330336
}
331337
}

0 commit comments

Comments
 (0)