fixed panic on expanding existing byt non-relation type field
This commit is contained in:
parent
9e3b230c8e
commit
bb527be493
|
@ -58,11 +58,14 @@ func (dao *Dao) expandRecords(records []*models.Record, expandPath string, fetch
|
||||||
// extract the relation field (if exist)
|
// extract the relation field (if exist)
|
||||||
mainCollection := records[0].Collection()
|
mainCollection := records[0].Collection()
|
||||||
relField := mainCollection.Schema.GetFieldByName(parts[0])
|
relField := mainCollection.Schema.GetFieldByName(parts[0])
|
||||||
if relField == nil {
|
if relField == nil || relField.Type != schema.FieldTypeRelation {
|
||||||
return fmt.Errorf("Couldn't find field %q in collection %q.", parts[0], mainCollection.Name)
|
return fmt.Errorf("Couldn't find relation field %q in collection %q.", parts[0], mainCollection.Name)
|
||||||
}
|
}
|
||||||
relField.InitOptions()
|
relField.InitOptions()
|
||||||
relFieldOptions, _ := relField.Options.(*schema.RelationOptions)
|
relFieldOptions, ok := relField.Options.(*schema.RelationOptions)
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf("Cannot initialize the options of relation field %q.", parts[0])
|
||||||
|
}
|
||||||
|
|
||||||
relCollection, err := dao.FindCollectionByNameOrId(relFieldOptions.CollectionId)
|
relCollection, err := dao.FindCollectionByNameOrId(relFieldOptions.CollectionId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -63,7 +63,7 @@ func TestExpandRecords(t *testing.T) {
|
||||||
0,
|
0,
|
||||||
2,
|
2,
|
||||||
},
|
},
|
||||||
// invalid missing first level expand
|
// missing relation field
|
||||||
{
|
{
|
||||||
[]string{"b8ba58f9-e2d7-42a0-b0e7-a11efd98236b", "df55c8ff-45ef-4c82-8aed-6e2183fe1125"},
|
[]string{"b8ba58f9-e2d7-42a0-b0e7-a11efd98236b", "df55c8ff-45ef-4c82-8aed-6e2183fe1125"},
|
||||||
[]string{"invalid"},
|
[]string{"invalid"},
|
||||||
|
@ -73,7 +73,17 @@ func TestExpandRecords(t *testing.T) {
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
},
|
},
|
||||||
// invalid missing second level expand
|
// existing, but non-relation type field
|
||||||
|
{
|
||||||
|
[]string{"b8ba58f9-e2d7-42a0-b0e7-a11efd98236b", "df55c8ff-45ef-4c82-8aed-6e2183fe1125"},
|
||||||
|
[]string{"title"},
|
||||||
|
func(c *models.Collection, ids []string) ([]*models.Record, error) {
|
||||||
|
return app.Dao().FindRecordsByIds(c, ids, nil)
|
||||||
|
},
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
},
|
||||||
|
// invalid/missing second level expand
|
||||||
{
|
{
|
||||||
[]string{"b8ba58f9-e2d7-42a0-b0e7-a11efd98236b", "df55c8ff-45ef-4c82-8aed-6e2183fe1125"},
|
[]string{"b8ba58f9-e2d7-42a0-b0e7-a11efd98236b", "df55c8ff-45ef-4c82-8aed-6e2183fe1125"},
|
||||||
[]string{"manyrels.invalid"},
|
[]string{"manyrels.invalid"},
|
||||||
|
|
Loading…
Reference in New Issue