登录
首页 >  Golang >  Go问答

通过 Gorm 的 AfterFind() 钩子来提取智能选择结构的值

来源:stackoverflow

时间:2024-02-12 20:36:23 273浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《通过 Gorm 的 AfterFind() 钩子来提取智能选择结构的值》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我有这个模型:

type user struct {
      id     uint
      name   string
      age    int
      gender string
      // hundreds of fields
 }

使用这个钩子:

func (m *user) afterfind(tx *gorm.db) (err error) {
  // i don't know how to get gender value of apiuser struct from here
  return
}

这个智能选择结构:

type apiuser struct {
  id   uint
  gender string
}

然后我运行这个查询:

DB.Model(&User{}).Find(&APIUser{}, id)

在 afterfind() 挂钩内部,我想在将数据库检索到的数据发送到客户端之前对其进行操作,但我无法获取该挂钩内的值。如何做到这一点?


正确答案


AfterFind 应设置为 apiuseruser

这里是示例代码

type user struct {
    id       uint64
    avatar   string
    nickname string
    password string
}

func (user *user) afterfind(*gorm.db) error {
    return nil
}

type usersimple struct {
    id     uint64
    avatar string
}

func (v *usersimple) afterfind(*gorm.db) error {
    v.avatar = "prefix/" + v.avatar
    return nil
}

us := &usersimple{}
db.model(&user{}).where("id = ?", 123).find(us) 

输出

{123 prefix/avatar}

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《通过 Gorm 的 AfterFind() 钩子来提取智能选择结构的值》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>