我有一个查询将用户的数据插入数据库。它工作正常,但该users表在 上有一个唯一索引username,因此当尝试创建用户名已存在的行时,它会抛出错误:
pub async fn create(user: UserRequest, pool: &PgPool) -> anyhow::Result<User> {
let new_user = sqlx::query_as!(
User,
r#"
INSERT INTO users (first_name, username)
VALUES ($1, $2)
RETURNING id, first_name, username
"#,
&user.first_name,
&user.username,
)
.fetch_one(&pool.clone())
.await?;
Ok(User {
id: new_user.id,
first_name: new_user.first_name,
username: new_user.username,
})
}
Run Code Online (Sandbox Code Playgroud)
&user是一个函数参数,定义为:
pub struct UserRequest {
pub first_name: String,
pub username: String,
}
Run Code Online (Sandbox Code Playgroud)
使用此函数的端点用于match检查它是否是Ok(user)或其他任何内容,并返回其响应:
pub async fn create_user(
user: web::Json<UserRequest>,
pool: Data<PgPool>,
) -> impl Responder …Run Code Online (Sandbox Code Playgroud)