我在使用这个库时遇到了一个问题,因为即使给定的输入不在数据库中,这个函数也会返回false,而实际上它应该返回true。
type User struct {
ID uint `gorm:"primary_key"`
Username string `json:",omitempty"`
Password string `json:",omitempty"`
CreatedAt time.Time `json:",omitempty"`
}
b, err := db.Con()
if err != nil {
log.Panic(err)
}
defer db.Close()
// We want an empty struct
// Otherwise it will trigger the unique key constraint
user := []User{}
// Check if the username is taken
// BUX, MUST FIX: This always returns false for some reason
if db.Where(&User{Username: "MyUsername"}).Find(&user).RecordNotFound() == false {
fmt.Println("Username found")
}
为什么它总是返回false,即使字符串是空的?
3条答案
按热度按时间py49o6xq1#
看起来
.RecordNotFound(
)由于某种原因从SDK中删除了。现在使用这个来处理record not found错误
col17t5w2#
下面的代码应该可以按照您的预期工作:
正如mkopriva已经提到的,当您使用切片时,
ErrRecordNotFound
不会触发。由于您不需要切片 (您的用户名应该是唯一的),我们可以:
1.引用不是用户的切片,而是单个用户
User{}
,而不是[]User{}
。1.使用
gorms
First()
方法代替Find()
。zzlelutf3#
两者类型不同,因此可以添加.Error()以确保它们是字符串