Golang中使用User ID作为外键批量创建记录失败问题
Golang中使用User ID作为外键批量创建记录失败问题
我有一个用于批量创建用户通话记录的API。我遇到的问题是在CreateInBatches中包含UserID。
我的API负载如下:
[
{
"formatted_number":"+1xxxxxxxx09",
"cached_matched_number":"+1xxxxxxx09",
},
{
"formatted_number":"+1xxxxxxxx11",
"cached_matched_number":"+1xxxxxxx11",
},
{
"formatted_number":"+1xxxxxxxx10",
"cached_matched_number":"+1xxxxxxx10"
}]
我希望登录的用户能够一次性保存这些数据。
以下是我的结构体:
type UserCallLog struct {
ID uuid.UUID `gorm:"type:uuid;default:uuid_generate_v4();primaryKey"`
FormattedNumber string `json:"formatted_number" gorm:"type:varchar(255);index"`
CachedMatchedNumber string `json:"cached_matched_number" gorm:"type:varchar(255);index"`
UserID uuid.UUID `json:"user_id" binding:"omitempty,uuid4" gorm:"index"`
User User `gorm:"foreignKey:UserID;references:ID"`
CreatedAt time.Time
UpdatedAt time.Time
}
请帮我看看以下代码中的问题:
func CreateCallLogs(c *gin.Context) {
user_id, _ := c.Get("id")
var callmetrics []models.UserCallLogMetric
var err []string
jsonError := c.ShouldBindJSON(&callmetrics)
if jsonError != nil {
err = append(err, utilities.Validate(jsonError)...)
utilities.ShowError(c, http.StatusBadRequest, err)
return
}
callmetrics.UserID = user_id.(uuid.UUID)
result :=database.DB.CreateInBatches(callmetrics, 100)
if result.Error != nil {
err = append(err, result.Error.Error())
utilities.ShowError(c, http.StatusBadRequest, err)
return
}
utilities.ShowMessage(c, http.StatusOK, "call logs created successfully")
}
非常感谢您的帮助。
更多关于Golang中使用User ID作为外键批量创建记录失败问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html
2 回复
你遇到的问题在于如何将 UserID 包含在 CreateInBatches 操作中。
你能更具体地说明问题是什么吗?查看你的代码,在我看来它无法编译,因为 var callmetrics []models.UserCallLogMetric 将 callmetrics 定义为一个切片,但随后你试图在这里设置一个字段:callmetrics.UserID = user_id.(uuid.UUID)。如果你的问题确实是无法编译,在我看来,你需要遍历 callmetrics 中的结构体,并为每一个设置 UserID 字段。如果这不是问题所在,我们需要更多信息。
更多关于Golang中使用User ID作为外键批量创建记录失败问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


