์ฌ๋ผ์ด์ค์ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ ๋ ๋ ์ฝ๋๊ฐ ์์ผ๋ฉด gorm.ErrRecordNotFound
๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ถ์ ์ฝ๋ ํ https://github.com/jinzhu/gorm/blob/master/callback_query.go#L87 -L89 ์ค๋ฅ ์ค์ ์ ์ฐจ๋จํ๊ธฐ ์ํด isSlice
bool ๊ฐ์ ์ถ๊ฐํ์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ํฌ์ธํฐ๋ฅผ ์ฌ๋ผ์ด์ค๋ก ์ฌ์ฉํ ๋ ์ด๋ป๊ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ์ฝ๋๋ฅผ ์ฐพ์ ์ ์์ต๋๊น? ๊ณ ๋ง์.
} else if scope.db.RowsAffected == 0 && !isSlice {
scope.Err(ErrRecordNotFound)
}
go version
)?์ต์
SQLite
package main
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/sqlite"
"fmt"
)
type Product struct {
gorm.Model
Code string
Price uint
}
func main() {
db, _ := gorm.Open("sqlite3", "test.db")
defer db.Close()
// Migrate the schema
db.AutoMigrate(&Product{})
// Create
db.Create(&Product{Code: "L1212", Price: 1000})
var products []Product
// No record can be found
if err:= db.Where(map[string]interface{}{"code": ""}).Find(&products).Error;err!=nil {
if err == gorm.ErrRecordNotFound {
//expect getting ErrRecordNotFound error
fmt.Print("ErrRecordNotFound")
}
}
}
๋ฌธ์ ๋ฅผ ๊ฒ์ํ ํ https://github.com/jinzhu/gorm/issues/228#issuecomment -281573321 Find a slice won't return error, bug find a struct will.
์ ์ฐพ์์ต๋๋ค.
์ด๊ฒ์ ๋ฌธ์์ ์ถ๊ฐํ๊ฑฐ๋ ํ๋ ์ผ๊ด์ฑ์ ์ ์งํ๋๋ก ๊ณ ๋ คํ ์ ์์ต๋๊น?
์ด๊ฒ์ ์ ํ ์์์น ๋ชปํ ์ผ์ ๋๋ค. ์กฐ๊ฐ์์ ์ฐพ๊ธฐ๋ ์ค๋ฅ๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค.
์ค์ ์ฝ๋๊ฐ ํ์ฌ ์ด๋ป๊ฒ ์๊ฒผ๋์ง์ ๋ํ ์:
var originalRecords []*Record
err := db.
Joins("JOIN records ON records.ext_id = external.id").
Where(`external."key" = ?`, key).
Find(&originalRecords).Error
if err != nil {
return nil, err
}
if len(originalRecords) == 0 {
return nil, gorm.ErrRecordNotFound
}
return originalRecords, nil
๋ณํฉ #2015, ๋ซ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฌธ์ ๋ฅผ ๊ฒ์ํ ํ https://github.com/jinzhu/gorm/issues/228#issuecomment -281573321
Find a slice won't return error, bug find a struct will.
์ ์ฐพ์์ต๋๋ค.์ด๊ฒ์ ๋ฌธ์์ ์ถ๊ฐํ๊ฑฐ๋ ํ๋ ์ผ๊ด์ฑ์ ์ ์งํ๋๋ก ๊ณ ๋ คํ ์ ์์ต๋๊น?