嗨,各位大佬们,拉个咨询贴法! 最近看 xorm、gorm、beego orm发现各有自己的优点,但最终决定使用哪个orm框架,还是很迷糊 ,本身很喜欢的django restframework (drf)的 serializer 思路,很方便控制展示API返回的字段;
就这点而言,gorm 查询后有个方法scan(your_struct)以将查询结果赋值自定义字段的struct中,达到drf的效果,xorm和beego orm这两个orm框架目前我还没发现有类似功能(目前发现都是直接将查询结果赋值给查询表struct中,无法一步到位的控制哪些字段不展示),请问有经验的大佬们一般是处理的了?感谢咯
有疑问加站长微信联系(非本文作者)

不展示是什么意思?不想查某些字段可以控制column,不想对外输出可以在struct的tag里控制
@heyHui2018 因为会有这样的需求,同一张表,可能不同API对外展示的字段不一样,所以我想用不同个性化的struct来存通过beego ORM filter后的数据,再由这个struct来对外展示 json ;
A struct { A_Field_NAME
json:"a_name"
A_Field_VALUEjson:"a_value"
}B struct { A_Field_NAME
json:"b_name"
}....
你这是显示用数据,怎么可以直接把数据库里的模型传过去……
你需要根据不同的接口/视图定义不同的viewmodel,再把数据传进去。
嗯嗯 是的
但目前都是前后端分离,所以我需要寻找这样一种方便的方法处理;
看了下你的需求
理论上来说,你需要一个viewmodel的输出结构,然后用一个方法将你查询出来的数据模型转换成相应的输出结构。
比如你可能需要设置a_group对应的值为空时的输出模型。
由于我不用orm,没法给出具体的步骤。
反正我是自己写了生成代码,对于这种join出来的结构直接根据数据库表结构生成代码的……
感谢您的回复 谢谢
我就是觉的 viewmodel的方式 有点不适合,有时候简单的SQL 可以直接orm,我感觉很省时间,用习惯了,复杂的还是需要直接写SQL语句;
···· 反正我是自己写了生成代码,对于这种join出来的结构直接根据数据库表结构生成代码的…… ···
请问,您这块有合适的公开代码可以参考下么?谢谢哦
如果是简单的sql,其实直接用go的sql库或者sqlx库就很好了。
生成代码本身并不复杂,就是根据不同的数据库做映射的硬功夫而已
https://github.com/herb-go/herb-go/blob/master/mohttps://beego.medules/modelmapper/select.go
https://github.com/herb-go/herb/tree/master/model/sql/db/columns
但这种代码肯定是和你使用的框架深度整合的,所以基本没什么参考意义。
你如果不是一定要使用orm的话,可以考虑querybuilder
好的 谢谢
那个 beego.modules 网站 好像无法访问额