检查用户是否已存在于数据库中

如何使用gorm检查用户是否已存在于数据库中?如果没有找到用户,我似乎找不到正确的方法来执行此操作而不会将错误记录到控制台。


到目前为止,这是我的代码


result := models.User{}

err := connection.DB.First(&result, "username = ?", user.Username).Error


if err == gorm.ErrRecordNotFound {


    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",

    })

}


if result.Username != "" {


    return c.Status(fiber.StatusConflict).JSON(fiber.Map{

        "error": "username already exists",

    })

}


return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{

    "error": "internal server error",

})

但是如果创建了一个新用户,则会向终端打印一条错误消息,说明未找到该记录。


湖上湖
浏览 105回答 2
2回答

阿波罗的战车

你也可以使用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",    })

MMMHUHU

设法找到一种使用原始 MySQL 的方法。var exists bool = falseif 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",})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go