New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BUG:update_by_wrapper update非数据库column字段 #91
Comments
方便临时提供一下work around的办法,毕竟这是一个bug。不能等你们修复我再修复。 |
你的表结构请使用 #[crud_enable( id_name:"id" | id_type:"u32" | table_name:"ip_info" | table_columns:"id,net_group_id,ip_pool_id,ip,mask,gateway,status,pod,create_time")]
#[derive(Clone, Debug)]
pub struct IpInfo {
pub id: Option<u32>,
pub net_group_id: Option<u32>,
pub ip_pool_id: Option<u32>,
pub ip: Option<String>,
pub mask: Option<String>,
pub gateway: Option<String>,
pub status: Option<u8>, //0-> unused 1-> using 2-> reserved 3->abandoned
pub pod: Option<String>,
pub create_time: Option<NaiveDateTime>,
//none table column
pub ip_pool: Option<String>
} |
我的理解是,update了非table字段,用什么方式写这个没区别,用宏还是这种写法都没法阻止update_by_wrapper没有判断是不是column字段 |
我已经看了源代码 ,column字段是用json!来推断出来的,没判断这个字段,我在哪里写都是一样的。而且我还必须用这个函数,因为我要update none的字段 |
是一个bug,临时解决的话,可以用py_sql,用sql的形式临时规避一下这个问题 |
有一定区别的,比如table_column字段,用宏比用实现接口 速度要快很多,因为宏直接重新实现直接return 定义的值,而接口必须走序列化有一定的性能消耗 |
我写了一个PR #92 |
能先打个tag我试用一下么?项目比较急 |
已发版 |
我建立了一个struct和trait如下:
其中ip_pool字段不是数据库字段,只是后续给前端返回需要填上去的。所以我在impl CRUDTable里声明了table_columns(),把它去掉了,增删查没什么问题,但是
db.update_by_wrapper::<IpInfo>("", &mut update_ip, &w, true)
的时候,发现log里面生成的sql,如下:居然update了ip_pool,这个非数据库字段,导致报错。。。
我排查了一下。发现这个方法是直接json!打包然后更新,并未读取table_columns()然后做更新,这是个问题。盼及时修复!,我在生产使用,太难了。。。
The text was updated successfully, but these errors were encountered: