【问题标题】:How to use Golang Sheriff Package with GORM library?如何将 Golang Sheriff 包与 GORM 库一起使用?
【发布时间】:2021-02-07 14:56:28
【问题描述】:

我正在尝试将 Golang Sheriff 包与 GORM 库一起使用,但我得到了一个空的响应。尝试了几种方法都没有运气。任何帮助都会很棒。 TIA

//STRUCT
type Book struct {
    ID        uint `json:"id" gorm:"primary_key" groups:"not_detail,detail"`
    Realname      string `json:"real_name" groups:"not_detail,detail"`
    LanguageId int `json:"language_id" groups:"not_detail,detail"`
    Language   Language `json:"Language" groups:"detail"`
    CreatedAt time.Time `json:"created_at" groups:"not_detail,detail"`
    UpdatedAt time.Time `json:"updated_at" groups:"not_detail,detail"`
}
//CONTROLLER LOGIC
func FindBooks(c *gin.Context)  {
    db := c.MustGet("db").(*gorm.DB)
    var books []models.Book
    result := db.Find(&books)

    o := sheriff.Options{
        Groups: []string{"not_detail"},
    }

    d, err := sheriff.Marshal(&o, result)
    if err != nil {
        panic(err)
    }

    c.JSON(http.StatusOK, gin.H{"data":d})
}

【问题讨论】:

    标签: go go-gorm


    【解决方案1】:
    result := db.Find(&books)
    

    这里Find() return *DB 表示数据库连接,获取的数据在books。所以你应该在sheriff.Marshal中发送books

    var books []models.Book
    db.Find(&books)
    
    o := sheriff.Options{
        Groups: []string{"not_detail"},
    }
    
    d, err := sheriff.Marshal(&o, books)
    

    【讨论】:

    • db := c.MustGet("db").(*gorm.DB) var books []models.Book o := sheriff.Options{ Groups: []string{"not_detail"}, } d, err := sheriff.Marshal(&o, db.Find(&books)) 这样做......但不知何故,空的结果来了......
    • 是的。但我没明白你的意思。我试图在 Marshal func 中调用 find 方法。但不工作..
    • Find 方法不返回书籍数据,而是在 Marshal 方法中发送获取的数据。我用完整的代码更新了答案。
    猜你喜欢
    • 2015-12-15
    • 1970-01-01
    • 2016-06-19
    • 2018-08-27
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 2022-01-04
    • 2013-05-23
    相关资源
    最近更新 更多