Gorm: 使用指向切片的指针时无法获取 gorm.ErrRecordNotFound

创建于 2018-08-01  ·  3评论  ·  资料来源: go-gorm/gorm

如果使用指向切片的指针时找不到记录,我希望可以得到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 ( 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.

可以将此添加到文档中还是考虑使行为保持一致?

所有3条评论

搜索问题后,我发现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 ,关闭它。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

rfyiamcool picture rfyiamcool  ·  3评论

pjebs picture pjebs  ·  3评论

satb picture satb  ·  3评论

littletwolee picture littletwolee  ·  3评论

youtwo123 picture youtwo123  ·  3评论