【发布时间】:2022-12-10 10:10:59
【问题描述】:
当我运行下面的代码时,它会编译但不会更新任何 todo 项目并且 affected_rows 等于 0。我在这里做错了什么?
注意:我查了官方documentation,没有找到任何解决办法...
pub fn update_todo(req_id: i32, update_payload: TodoUpdate) -> Result<usize, Error>
{
let connection = establish_connection();
let title_payload = match update_payload.title {
Some(title_payload)=> title_payload,
None => "".to_string()
};
let status_payload = match update_payload.status {
Some(status_payload)=> status_payload,
None => "".to_string()
};
let mut query = update(todos)
.set(id.eq(req_id)).into_boxed();
if title_payload.len() > 5 {
query = query.filter(title.eq(title_payload));
}
if status_payload.len() > 3 {
query = query.filter(status.eq(status_payload));
}
query.execute(&connection)
}
注 2:当我不使用 into_boxed() 并删除 if 语句时,它工作正常。但如果只有标题长度大于 5 且状态长度大于 3,我想工作。这就是我使用 into_boxed 方法的原因。
【问题讨论】:
标签: rust rust-diesel