2 回答

TA貢獻(xiàn)1862條經(jīng)驗 獲得超6個贊
你也可以使用FirstOrCreate
來自Doc
:
獲取第一個匹配記錄或在給定條件下創(chuàng)建一個新記錄(僅適用于結(jié)構(gòu)、映射條件)
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貢獻(xiàn)1834條經(jīng)驗 獲得超8個贊
設(shè)法找到一種使用原始 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 關(guān)注
- 125 瀏覽
添加回答
舉報