在 golang 中更新 Jsonb 列

Har*_*rdy 5 postgresql go

我正在尝试更新特定行的 Jsonb 列值。我运行了查询

UPDATE instruction.file SET "details" = (jsonb_set("details",'{"UploadBy"}','"test@test.com"'::jsonb, true)) WHERE id=820;
Run Code Online (Sandbox Code Playgroud)

这在 pgAdmin3 中工作正常。

当我试图在我的 Go 代码中做同样的事情时。我收到错误:“pq:json 类型的输入语法无效”

我的代码:

func main() {
    uname := "test@test.com"

    err := Init() //Db init
    if err != nil {
        fmt.Println("Error", err)
        return
    }

    result, err1 := Db.Exec("UPDATE instruction.file SET \"details\" = (jsonb_set(\"details\",'{\"UploadBy\"}',$1::jsonb, true)) WHERE id=$2", uname, "820")
    if err1 != nil {
        fmt.Println("Error", err1)
        return
    }
    n, err1 := result.RowsAffected()
    if err1 != nil {
        fmt.Println("Error", err1)
        return
    }

    if n != 1 {
        err1 = errors.New("Unable to update instruction.file")
        fmt.Println("Error", err1)
        return
    }

    fmt.Println("Success")
    return
}
Run Code Online (Sandbox Code Playgroud)

Clo*_*eto 7

使用to_jsonb

Db.Exec(`
    UPDATE instruction.file
    SET details = jsonb_set("details", '{"UploadBy"}', to_jsonb($1::text), true)
    WHERE id = $2
    `, uname, "820"
)
Run Code Online (Sandbox Code Playgroud)