Извлечение данных массива из столбца JSONB в PostgreSQL и его перенос в фрагмент строки In Go с использованием библиотеки pgx

Мне как-то удалось заставить это работать, но не совсем так, как предполагалось. Код ниже "poco" для данных в столбце JSONB.

type post struct {
    Title       string   `json:"title"`
    Tags        []string `json:"tags"`
}

Ниже у меня есть инициализация среза постов, а также одного поста для сканирования каждой строки в. Остальное - стандартный код запроса. это data это имя столбца, который объявлен как JSONB

var t post
var h []post
rows, err := conpool.Query("SELECT data FROM post")
if err != nil {
    fmt.Println(err)
}
defer rows.Close()
for rows.Next() {
    if err := rows.Scan(&t); err != nil {
        fmt.Println(err)
    }
    h = append(h, t)
}
for _, v := range h {
    fmt.Println(v.Title,v.Tags)
}

Выход я получаю:

First Title [qwe asd]
Second Title [qwe asd]
Third Title [qwe asd]

Как вы можете видеть выше, вывод каждого среза тега одинаков, так как срез - это просто указатель на последний массив, который извлекается из базы данных, перезаписывает предыдущие. Я знаю, что если я объявлю пост как Tags [2]string это работает, но мне нужно использовать слайс, так как я понятия не имею, сколько может быть тегов, какие-либо предложения для этой проблемы?

Вот как выглядит таблица

1 | {"tags": ["asd", "dsa"], "title": "First Title"}
2 | {"tags": ["tsa", "asd"], "title": "Second Title"}
3 | {"tags": ["qwe", "asd"], "title": "Third Title"}

0 ответов

Другие вопросы по тегам