Вернуть nil struct вместо пустой struct go-gorm - PullRequest
0 голосов
/ 30 сентября 2018

Со следующей моделью:

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

Если вы выполняете следующий запрос с go-gorm для пользователя, который НЕ существует:

var user User
db.First(&user)

В итоге вы получите пустую структуру с заполненными полями даты.Есть ли способ вместо этого просто получить nil структуру обратно или я думаю об этом неправильно?

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

В gorm вы должны проверить, является ли запись пустой, с помощью вызова метода:

if db.First(&user, 77).RecordNotFound() {
    log.Println("UUID:", 77, err)
}
0 голосов
/ 30 сентября 2018

Добавить функцию указателя

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

и передать ее

var user User
db.First(user.Pointer())
...