duanjin9035
2018-09-30 07:41
浏览 137
已采纳

返回nil struct而不是空struct go-gorm

With the following model:

type User struct {
    UUID string         `gorm:"primary_key"`
    Name string         `gorm:"NOT NULL"`
    CreatedAt time.Time
    UpdatedAt time.Time
}

If you do the following query with go-gorm for a user that does NOT exist:

var user User
db.First(&user)

You end up receiving an empty struct with the date fields populated. Is there a way to instead just receive a nil struct back or am I thinking about this in the wrong way?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dongyuans61046 2018-09-30 09:05
    已采纳

    In gorm you are supposed to check if the record is empty, with a method call:

    if db.First(&user, 77).RecordNotFound() {
        log.Println("UUID:", 77, err)
    }
    
    已采纳该答案
    打赏 评论
  • doulai5585 2018-09-30 08:33

    Add a Pointer function

    func (user User) Pointer() *User {
        var t time.Time
        if user.UUID == "" && user.Name == "" && user.CreatedAt == t && user.UpdatedAt == t {
            return nil
        }
        return &user
    }
    

    and pass it

    var user User
    db.First(user.Pointer())
    
    打赏 评论

相关推荐 更多相似问题