Estoy tratando de utilizar el paquete Sheriff de Golang con la biblioteca GORM. De alguna manera, obtengo una respuesta vacía. Intenté un par de formas sin suerte. Cualquier ayuda sería genial. 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})
}
0
deepu 25 oct. 2020 a las 01:44

1 respuesta

La mejor respuesta
result := db.Find(&books)

Aquí Find() return *DB significa conexión de base de datos, los datos obtenidos están en books. Por lo tanto, debe enviar books en sheriff.Marshal

var books []models.Book
db.Find(&books)

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

d, err := sheriff.Marshal(&o, books)
1
Eklavya 25 oct. 2020 a las 16:17