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

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

在 PostgreSQL Gorm 中獲取數據

在 PostgreSQL Gorm 中獲取數據

Go
森林海 2022-11-23 19:56:55
我有我的模型如下:package modelsimport "github.com/lib/pq"type Guild struct {    Id               string         `json:"id" gorm:"primaryKey"`    DefaultBitrate   int            `json:"defaultBitrate"`    DefaultState     string         `json:"defaultState"`    DefaultCategory  string         `json:"defaultCategory"`    DefaultUserLimit int            `json:"defaultUserLimit"`    HelpChannel      string         `json:"helpChannel"`    Generators       pq.StringArray `json:"generators" gorm:"type:text[]"`    Channels         pq.StringArray `json:"channels" gorm:"type:text[]"`}函數文件:func (h handler) CreateGuild(guildid string) error {    guild := &models.Guild{        Id:             guildid,        DefaultBitrate: "64",    }    if result := h.DB.Create(&guild); result.Error != nil {        return result.Error    }    return nil}func (h handler) GetGuild(guildid string) (models.Guild, error) {    var guild models.Guild    if result := h.DB.First(&guild, guildid); result.Error != nil {        return guild, result.Error    }    return guild, nil}所以我所做的是先創建一個公會,然后嘗試使用相同的 ID 獲取它,但我沒有在控制臺中記錄任何內容Database := db.Init()    h := dbhandlers.New(Database)    data, err := h.GetGuild("71728137382983743892")    fmt.Print(data.DefaultBitrate)Github:https ://github.com/apidev234/abred注意:我已經這樣創建了公會: err := h.CreateGuild("71728137382983743892")調試:2022/03/24 13:37:23 /Users/gaurish/Desktop/Coding/TempVC-Bot/database/handlers/Functions.go:12 SLOW SQL >= 200ms[1126.461ms] [rows:1] INSERT INTO "guilds" ("id","default_bitrate","default_state","default_category","default_user_limit","help_channel") VALUES ('ASDHA','64','','',0,'')2022/03/24 13:37:44 /Users/gaurish/Desktop/Coding/TempVC-Bot/database/handlers/Functions.go:19 ERROR: column "asdha" does not exist (SQLSTATE 42703)[229.439ms] [rows:0] SELECT * FROM "guilds" WHERE ASDHA ORDER BY "guilds"."id" LIMIT 1
查看完整描述

1 回答

?
汪汪一只貓

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

使用First非數字主鍵時,您需要明確指定要與主鍵匹配的列。


官方文檔:


如果主鍵是字符串(比如uuid),查詢會寫成這樣:


db.First(&user, "id = ?", "1b74413f-f3b8-409f-ac47-e8c062e3472a")

// SELECT * FROM users WHERE id = "1b74413f-f3b8-409f-ac47-e8c062e3472a";

所以在GetGuild這個:


h.DB.First(&guild, guildid)

應該是這樣的:


h.DB.First(&guild, "id = ?", guildid)


查看完整回答
反對 回復 2022-11-23
  • 1 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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