fixed string to objectid in filter
This commit is contained in:
parent
ef51f2446b
commit
5fcd080a33
14
crud.go
14
crud.go
@ -54,12 +54,14 @@ type PipelineModifierFunction func(pipeline []bson.M) []bson.M
|
|||||||
func convertIDValue(v reflect.Value) reflect.Value {
|
func convertIDValue(v reflect.Value) reflect.Value {
|
||||||
v = reflect.ValueOf(v.Interface())
|
v = reflect.ValueOf(v.Interface())
|
||||||
vKind := v.Kind() // mapVal.Kind() does not work, no idea why ;(
|
vKind := v.Kind() // mapVal.Kind() does not work, no idea why ;(
|
||||||
spew.Dump(v.Interface())
|
//spew.Dump(v.Interface())
|
||||||
spew.Dump(vKind)
|
//spew.Dump(vKind)
|
||||||
|
|
||||||
switch vKind {
|
switch vKind {
|
||||||
case reflect.String:
|
case reflect.String:
|
||||||
return reflect.ValueOf(bson.ObjectIdHex(v.Interface().(string)))
|
if hex, ok := v.Interface().(string); ok {
|
||||||
|
return reflect.ValueOf(bson.ObjectIdHex(hex))
|
||||||
|
}
|
||||||
case reflect.Map:
|
case reflect.Map:
|
||||||
for _, key := range v.MapKeys() {
|
for _, key := range v.MapKeys() {
|
||||||
v.SetMapIndex(key, convertIDValue(v.MapIndex(key)))
|
v.SetMapIndex(key, convertIDValue(v.MapIndex(key)))
|
||||||
@ -74,7 +76,7 @@ func convertIDValue(v reflect.Value) reflect.Value {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func idToObjectID(filter interface{}) {
|
func idToObjectID(filter interface{}) {
|
||||||
spew.Dump(filter)
|
//spew.Dump(filter)
|
||||||
val := reflect.ValueOf(filter)
|
val := reflect.ValueOf(filter)
|
||||||
switch reflect.TypeOf(filter).Kind() {
|
switch reflect.TypeOf(filter).Kind() {
|
||||||
case reflect.Slice:
|
case reflect.Slice:
|
||||||
@ -130,7 +132,7 @@ func idToObjectID(filter interface{}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ReadCollection gets the filtered collection of the model
|
// ReadCollection gets the filtered collection of the model
|
||||||
func ReadCollection(db *mgo.Database, results interface{}, filter bson.M, selector bson.M, offset int, limit int, sort []string, pipelineModifier PipelineModifierFunction) (err *ErrorWithStack) {
|
func ReadCollection(db *mgo.Database, results interface{}, filter bson.M, selector bson.M, offset int, limit int, sort []string, pipelineModifier PipelineModifierFunction) (err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
err = &ErrorWithStack{Message: fmt.Sprintf("%v", r), StackTrace: string(debug.Stack())}
|
err = &ErrorWithStack{Message: fmt.Sprintf("%v", r), StackTrace: string(debug.Stack())}
|
||||||
@ -234,7 +236,7 @@ func ReadCollection(db *mgo.Database, results interface{}, filter bson.M, select
|
|||||||
if _err != nil {
|
if _err != nil {
|
||||||
return &ErrorWithStack{Message: _err.Error(), StackTrace: string(debug.Stack())}
|
return &ErrorWithStack{Message: _err.Error(), StackTrace: string(debug.Stack())}
|
||||||
}
|
}
|
||||||
return err
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadCollectionCount gets the count of elements in filtered collection
|
// ReadCollectionCount gets the count of elements in filtered collection
|
||||||
|
Loading…
Reference in New Issue
Block a user