我正在Go中创建一个简单的resp API,它可以从PostgreSQL数据库中查询。由于某些结果是数组,因此我正在使用pq.Array
对其进行转换,但是如果数组为空,则会出现以下错误
Scan error on column index 5, name "detailed_muscle_group": pq: parsing array element index 0: cannot convert nil to string
我知道它不能从空数组转换,但是我不知道如何处理。
这是它的控制器:
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
}