如何在Go中使用`pq.Scan`扫描空数组?

时间:2019-05-13 19:50:02

标签: postgresql go pq

我正在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
}

0 个答案:

没有答案