发送 gorm 模型的有效方法是什么,该模型与用于将数据存储在数据库中的 gorm 模型不同?
该Post模型(结构)用于将数据存储在数据库中。
type Post struct {
gorm.Model
Title string
Body string
}
但我想使用这个PostReadgorm 模型,而不是发送回用户。因为以后可能会有额外的变量添加到这个数据库中,这些变量不会存储在这个数据库中。(或者额外的变量可能来自其他服务或数据库)
type PostRead struct {
ID string `json:"id" gorm:"primary_key"`
Title string `json:"title"`
Body string `json:"body"`
CreatedAt time.Time `json:"createAt"`
UpdatedAt time.Time `json:"updatedAt"`
...
<other variables to be added later>
}
这是我当前的控制器代码,用于发回数据:
func PostGetAll(c *gin.Context) {
posts, err := services.PostGetAllService()
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err})
return
}
c.JSON(http.StatusOK, gin.H{"posts": posts})
}
这是我的服务代码,用于从数据库中获取数据:
func PostGetAllService() ([]models.Post, error) {
var posts []models.Post
result := initializers.DB.Find(&posts)
if result.Error != nil {
return nil, errors.New(result.Error.Error())
}
return posts, nil
}
注意:我知道我可以PostRead在控制器函数中创建一个 SliceArray PostGetAll(),然后用于append()将来自帖子 () 的数据添加Post到 SliceArray 中。但对我来说,这似乎是解决这个问题的丰富方法,因此我想知道是否存在更好的解决方案?
更高效的解决方案
繁花不似锦
相关分类