亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 GORM 在 Postgres 的 JSONB 字段中插入數據

如何使用 GORM 在 Postgres 的 JSONB 字段中插入數據

Go
慕碼人2483693 2022-07-25 10:33:41
我有這樣的模型模型.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"`}array of object我想使用 GORM 在 postgres 中插入 FieldNameOfJsonb如下所示{    "name": " james",    "email": "[email protected]",    "FieldNameOfJsonb": [        {            "someField1": "value",            "someFiedl2": "somevalue",            },        {            "Field1": "value1",            "Fiedl2": "value2",        }    ],
查看完整描述

3 回答

?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

只需在 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)

}

-> Marshal , Unmarshal的參考鏈接


現在您可以使用插入數據DB.Create(&yourTableName)


查看完整回答
反對 回復 2022-07-25
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

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


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


Gorm 使用pgx它作為驅動程序,并且pgx具有名為 的包pgtype,其類型為pgtype.JSONB。


如果您已經pgx按照 Gorm 的指示安裝,則不需要安裝任何其他軟件包。


此方法應該是最佳實踐,因為它使用底層驅動程序并且不需要自定義代碼。


type User struct {

    gorm.Model

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

}

從數據庫中獲取價值


u := User{}

db.find(&u)


var data []string


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

if err != nil {

    t.Fatal(err)

}

將值設置為 DB


u := User{}


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

if err != nil {

    return

}


db.Updates(&u)


查看完整回答
反對 回復 2022-07-25
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

您可以使用gorm-jsonb包。



查看完整回答
反對 回復 2022-07-25
  • 3 回答
  • 0 關注
  • 348 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號