我正在嘗試將柴油diesel = { version = "1.4.8", features = ["postgres","64-column-tables","chrono","serde_json"] } 用于專案,并且我想更新 postgresql 表中的一些欄位,來自客戶端的傳遞引數定義如下:
pub struct UpdateChannelRequest {
pub channelId: i64,
pub tags: Option<Vec<Tag>>,
pub commentRss: i32,
pub partOutput: i32,
pub subStatus: i32
}
我現在正在使用此代碼更新表格:
pub fn update_channel_impl(request: &Json<UpdateChannelRequest>){
use crate::model::diesel::dolphin::dolphin_schema::rss_sub_source::dsl::*;
let connection = config::establish_connection();
let predicate = crate::model::diesel::dolphin::dolphin_schema::rss_sub_source::id.eq(request.channelId);
diesel::update(rss_sub_source.filter(predicate))
.set((comment_rss.eq(&request.commentRss),part_output.eq(&request.partOutput),sub_status.eq(&request.subStatus)))
.get_result::<RssSubSource>(&connection)
.expect("unable to update channel");
}
我面臨的問題是前端每次都需要傳遞所有更新欄位。是否可以通過傳遞欄位進行服務器端條件更新?例如,將某些欄位定義為 Option,如果傳遞了欄位值,則對其進行更新。如果不傳遞值,則忽略欄位(必須傳遞 id,因為我們需要通過 id 更新記錄)。
uj5u.com熱心網友回復:
如果結構上有任何可選欄位,這些欄位也會有特殊行為。默認情況下,#[derive(AsChangeset)] 將假定 None 意味著您不希望分配該欄位。
所有關于更新指南
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/476023.html
標籤:PostgreSQL 锈 锈柴油
