第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何使用 GORM 在 POSTGRES 的 JSONB 字段中插入數(shù)據(jù)

如何使用 GORM 在 POSTGRES 的 JSONB 字段中插入數(shù)據(jù)

Go
寶慕林4294392 2022-08-01 10:23:01
我有這樣的模型model.gotype yourTableName struct {   Name             string `gorm:"type:varchar(50)" json:"name"`   Email            string `gorm:"type:varchar(50)" json:"email"`   FieldNameOfJsonb JSONB  `gorm:"type:jsonb" json:"fieldnameofjsonb"`}我想使用 GORM 在 postgres 中插入 FieldNameOfJsonb 作為array of object如下圖所示{    "name": " james",    "email": "james@gmail.com",    "FieldNameOfJsonb": [        {            "someField1": "value",            "someFiedl2": "somevalue",            },        {            "Field1": "value1",            "Fiedl2": "value2",        }    ],
查看完整描述

3 回答

?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊

只需在Model.go中添加下面的代碼(referenceLink)



import (

    "errors"

    "database/sql/driver"

    "encoding/json"

)


// JSONB Interface for JSONB Field of yourTableName Table

type JSONB []interface{}


// Value Marshal

func (a JSONB) Value() (driver.Value, error) {

    return json.Marshal(a)

}


// Scan Unmarshal

func (a *JSONB) Scan(value interface{}) error {

    b, ok := value.([]byte)

    if !ok {

        return errors.New("type assertion to []byte failed")

    }

    return json.Unmarshal(b,&a)

}

->元帥的參考鏈接,Unmarshal


現(xiàn)在您可以使用以下命令插入數(shù)據(jù)DB.Create(&yourTableName)


查看完整回答
反對 回復(fù) 2022-08-01
?
夢里花落0921

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊

我在 https://stackoverflow.com/a/71636216/13719636 中回答了類似的問題。


在 Gorm 中使用 JSONB 的最簡單方法是使用 .pgtype.JSONB


Gorm 使用作為驅(qū)動(dòng)程序,并具有名為 的包,其類型名為 。pgxpgxpgtypepgtype.JSONB


如果您已經(jīng)按照Gorm的指示進(jìn)行安裝,則無需安裝任何其他軟件包。pgx


此方法應(yīng)該是最佳做法,因?yàn)樗褂没A(chǔ)驅(qū)動(dòng)程序,并且不需要自定義代碼。


type User struct {

    gorm.Model

    Data pgtype.JSONB `gorm:"type:jsonb;default:'[]';not null"`

}

從數(shù)據(jù)庫中獲取價(jià)值


u := User{}

db.find(&u)


var data []string


err := u.Data.AssignTo(&data)

if err != nil {

    t.Fatal(err)

}

將值設(shè)置為 DB


u := User{}


err := u.Data.Set([]string{"abc","def"})

if err != nil {

    return

}


db.Updates(&u)


查看完整回答
反對 回復(fù) 2022-08-01
?
Helenr

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊

你可以使用 gorm-jsonb package。


查看完整回答
反對 回復(fù) 2022-08-01
  • 3 回答
  • 0 關(guān)注
  • 273 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號