关于GoFrame的踩坑 (v2)

ORM模型中,字段使用了指针也不会返回nil,官方说法是为了安全,但我认为这不严谨。特别是对于接口洁癖的人来说会看到很多空字符串。而且如果不走ORM,在Response上nil字段也会变成null存在。

 

自带的gf cli工具生成模型并不好用,不能自动生成关联(目前)。如果手动维护关联,后续再次使用gf gen dao的时候模型会被覆盖,除非将模型放置在其它位置。

 

dto和entity,dto中的字段都是interface{} 便于写入时使用,entity中的字段是相应的类型,而且带json tag便于输出。在多数场景下还是需要单独构建业务所需的模型。

 

GoFrame的ORM对于many to many的关联不友好

无法通过tag设置关系表,需要套2层模型才可以实现,这样会打乱模型结构  主表模型[i].关联表模型[j].附表.成员

通过join方法再scan会出现主键重复,而且对于两表重复的字段(id)不做自动处理,加As语句无用,需要手动调用Fields(“user.id as uid”),而且需要模型配合字段绑定才可以进行scan。

使用With方法多层关联时会产生大量无效查询 #1552

2022-02-03 04:13:40.579 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 1 ms] [default] [rows:20 ] SELECT `id`,`name`,`ourOrgName`,`ourDirector`,`partnerOrgName`,`partnerDirector`,`ourContractNo`,`partnerContractNo`,`contractAmount`,`siginedTime`,`effectiveTime`,`expiryTime`,`comment`,`status`,`creatorId` FROM `contract` WHERE `deleted_at` IS NULL LIMIT 0,20
2022-02-03 04:13:40.596 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 15 ms] [default] [rows:6 ] SELECT `contractId`,`uploadId` FROM `contract_upload` WHERE `contractId` IN(11,12,13,14,15,16,17,18,19,29,31,32,33,34,38,39,40,41,42,43)
2022-02-03 04:13:40.597 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:4 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (`id` IN(4,5,6,25)) AND `delete_at` IS NULL
2022-02-03 04:13:40.598 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL
2022-02-03 04:13:40.599 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 1 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL
2022-02-03 04:13:40.599 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL
2022-02-03 04:13:40.600 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL
2022-02-03 04:13:40.600 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL
2022-02-03 04:13:40.601 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL
2022-02-03 04:13:40.601 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL
2022-02-03 04:13:40.602 [DEBU] {bc53b8ac3d11d016875f4310649a3c9b} [ 0 ms] [default] [rows:0 ] SELECT `id`,`originName`,`path`,`thumbnail`,`creatorId`,`create_at`,`update_at`,`delete_at` FROM `upload` WHERE (0=1) AND `delete_at` IS NULL

对于这个ORM ,写这种烂代码让我想回到拿着iris+gorm+gojwt+redigo去造轮子了。

 

上传文件不知道如何写Request,想让Request通过依赖注入包含file字段

 

静态文件服务不带中间件,无法实现授权访问

 

 

 

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇