Извлечение данных массива из столбца 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"}