2 回答
TA贡献1862条经验 获得超6个赞
你也可以使用FirstOrCreate
来自Doc
:
获取第一个匹配记录或在给定条件下创建一个新记录(仅适用于结构、映射条件)
u := connection.DB.FirstOrCreate(user)
if u.Error != nil {
return c.Status(fiber.StatusInternalServerError).JSON(
fiber.Map{
"error": "Internal server error",
}
)
}
if u.RowsAffected == 1 {
return c.Status(fiber.StatusCreated).JSON(
fiber.Map{
"message": "User created successfully",
}
)
}
return c.Status(fiber.StatusBadRequest).JSON(
fiber.Map{
"error": "Username already exists",
}
)
TA贡献1834条经验 获得超8个赞
设法找到一种使用原始 MySQL 的方法。
var exists bool = false
if err := connection.DB.Raw(
"SELECT EXISTS(SELECT 1 FROM users WHERE username = ?)",
user.Username).
Scan(&exists).Error; err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": "internal server error",
})
}
if exists {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
"error": "Username already exists",
})
}
if err := connection.DB.Create(&user).Error; err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": "internal server error",
})
}
return c.Status(fiber.StatusCreated).JSON(fiber.Map{
"message": "User created successfully",
})
- 2 回答
- 0 关注
- 101 浏览
添加回答
举报