This question already has an answer here:
I'm creating a simple resp API in Go which queries from a PostgreSQL database. Since some of the results are a array I'm using pq.Array
to convert it however if the array is empty I get the following error
Scan error on column index 5, name "detailed_muscle_group": pq: parsing array element index 0: cannot convert nil to string
I understand it can't convert from a empty array but I don't know how to handle this.
Here is the controller for it:
package controllers
import (
"exercisedb-api/config"
"exercisedb-api/models"
"github.com/lib/pq"
)
func GetExercises() []models.Exercise {
db := config.OpenDB()
exercises := []models.Exercise{}
rows, err := db.Query(`SELECT exercise, dificulty, type, mechanic, equipment, detailed_muscle_group FROM overview LIMIT 10;`)
if err != nil {
panic(err)
}
for rows.Next() {
exercise := models.Exercise{}
err = rows.Scan(&exercise.Title, &exercise.Difficulty, &exercise.Type, &exercise.Mechanic, pq.Array(&exercise.Equipment), pq.Array(&exercise.DetailedMuscleGroup))
if err != nil {
panic(err)
}
exercises = append(exercises,exercise)
}
err = rows.Err()
if err != nil {
panic(err)
}
return exercises
}
</div>