解決goxorm無法更新值為默認(rèn)值的問題
今天遇到個(gè)問題,goxorm無法更新某一個(gè)字段為0.
xxTable := &models.XXTable{Visible: visible}
affected, err := eng.Where("id=?", id).Update(xxTable)
這種情況下,因?yàn)間o的結(jié)構(gòu)初始值都是各自的0值,所以xorm無法識(shí)別要更新結(jié)構(gòu)體中的哪個(gè)col,如下方法寫可以正常解決。
xxTable := &models.XXTable{Visible: visible}
affected, err := eng.Where("id=?", id).Cols("visible").Update(xxTable)
補(bǔ)充:golang gin xorm注意事項(xiàng)
1. 無論是golang還是xorm中,在填寫j'son字段時(shí),注意空格,比如 `json:"abcd "` `json:"abcd"`是不一樣的,不仔細(xì)對比會(huì)出錯(cuò)
2.當(dāng)結(jié)合gin框中的
c.JSON(http.StatusOK,gin.H{})操作
并且使用xorm中的join,find操作時(shí)(https://www.kancloud.cn/xormplus/xorm/167102)要注意如下現(xiàn)象,
假如定義兩個(gè)結(jié)構(gòu)體對應(yīng)兩個(gè)表

然后使用聯(lián)合查詢,先把兩個(gè)結(jié)構(gòu)體結(jié)合成一個(gè)結(jié)構(gòu)體,假如如下,在UserGroup中使用User和Group匿名結(jié)構(gòu)體,

那么當(dāng)我們使用gin的c.JSON(http.StatusOK,gin.H{"data":UserGroup})返回?cái)?shù)據(jù)時(shí)會(huì)導(dǎo)致Group和User中同名字段顯示不了,這應(yīng)該是gin和xorm的不是很兼容造成的(沒有深究),要解決這個(gè)問題,最好讓UserGroup中的User和Group不要以匿名結(jié)構(gòu)體的形式存在,可以改成
type UserGroup struct {
MyUser User `xorm:"extends" json:"你要json中返回的名字"`
MyGroup Group `xorm:"extends" json:"你要json中返回的名字"`
}
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Go語言通過WaitGroup實(shí)現(xiàn)控制并發(fā)的示例詳解
Channel能夠很好的幫助我們控制并發(fā),但是在開發(fā)習(xí)慣上與顯示的表達(dá)不太相同,所以在Go語言中可以利用sync包中的WaitGroup實(shí)現(xiàn)并發(fā)控制,本文就來和大家詳細(xì)聊聊WaitGroup如何實(shí)現(xiàn)控制并發(fā)2023-01-01
golang基于errgroup實(shí)現(xiàn)并發(fā)調(diào)用的方法
這篇文章主要介紹了golang基于errgroup實(shí)現(xiàn)并發(fā)調(diào)用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09
Go讀取yaml文件到struct類的實(shí)現(xiàn)方法
本文主要介紹了Go讀取yaml文件到struct類,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
基于Go語言實(shí)現(xiàn)應(yīng)用IP防火墻
在公司里面經(jīng)常會(huì)聽到某應(yīng)用有安全漏洞問題,沒有做安全加固,IP防火墻就是一個(gè)典型的安全加固解決方案,下面我們就來學(xué)習(xí)一下如何使用go語言實(shí)現(xiàn)IP防火墻吧2023-11-11

