Home > Backend Development > Golang > How to Work with JSONB Data in GORM without postgres.Jsonb?

How to Work with JSONB Data in GORM without postgres.Jsonb?

Patricia Arquette
Release: 2024-11-20 02:25:02
Original
431 people have browsed it

How to Work with JSONB Data in GORM without postgres.Jsonb?

Working with JSONB in GORM without postgres.Jsonb

When utilizing GORM with PostgreSQL, you may encounter situations where you want to store an array of strings as a JSONB object. While GORM provides the postgres.Jsonb type for this purpose, you may prefer to avoid using it. In this article, we'll explore alternative methods for manipulating JSONB using GORM without relying on the postgres.Jsonb type.

Using pgtype.JSONB

The recommended approach involves utilizing pgtype.JSONB, a type provided by the pgx driver used by GORM. pgtype.JSONB offers a straightforward and efficient way to interact with JSONB columns. Here's an example:

type User struct {
    gorm.Model
    Data pgtype.JSONB `gorm:"type:jsonb;default:'[]';not null"`
}
Copy after login

Retrieving JSONB Data

To retrieve a JSONB value from the database, assign it to a variable:

u := User{}
db.find(&u)

var data []string
err := u.Data.AssignTo(&data)
if err != nil {
    // Handle error
}
Copy after login

Storing JSONB Data

To store a JSONB value in the database, use the Set method:

u := User{}
err := u.Data.Set([]string{"abc", "def"})
if err != nil {
    // Handle error
}
db.Updates(&u)
Copy after login

By employing pgtype.JSONB, you gain flexibility and compatibility with various JSONB types beyond simple string arrays. This approach aligns with GORM's underlying driver's capabilities, ensuring optimal performance and reliable database interactions.

The above is the detailed content of How to Work with JSONB Data in GORM without postgres.Jsonb?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template