Use the only field type elem to check the content

This commit is contained in:
2021-03-08 09:26:09 +01:00
parent 8d6a318bb2
commit 5e8e65d03e
+9 -6
View File
@@ -195,17 +195,20 @@ func (d *Database) createAggregateLoad(target interface{}, composed *query.Query
continue
}
isSlice := el.Field(i).Kind() == reflect.Slice
field := elType.Field(i)
fieldType := field.Type
typ := el.Field(i).Type()
if typ.Kind() == reflect.Slice {
typ = typ.Elem()
isSlice := fieldType.Kind() == reflect.Slice
if isSlice {
fieldType = fieldType.Elem()
}
if typ.Kind() != reflect.Ptr {
isPtr := fieldType.Kind() != reflect.Ptr
if isPtr {
panic(fmt.Errorf("preload field should have ptr type"))
}
lookupCollection := d.GetCollectionOf(reflect.Zero(typ).Interface())
lookupCollection := d.GetCollectionOf(reflect.Zero(fieldType).Interface())
lookupVars := primitive.M{"selector": "$" + localField}
lookupPipeline := primitive.A{
primitive.M{"$match": primitive.M{"$expr": primitive.M{"$eq": primitive.A{"$" + foreignField, "$$selector"}}}},