在Diesel中如何忽略结构体中的字段?
在Diesel中如何忽略结构体中的字段?
嗨,这个问题我熟!你遇到的报错是因为Diesel的Queryable和Selectable宏默认会要求结构体的每个字段都能在指定的数据库表schema里找到对应的列。你的name字段在crate::schema::tokens里不存在,所以才会触发这个错误。
解决方法很简单,只需要给要忽略的字段加上#[diesel(ignore)]属性就行,它会告诉Diesel在处理ORM相关操作(比如查询、映射结果)的时候,完全跳过这个字段,不把它和数据库表的列做关联。
修改后的代码应该是这样的:
#[derive(Debug, Queryable, Selectable)] #[diesel(table_name = crate::schema::tokens)] pub struct Token { pub public_key: String, #[diesel(ignore)] pub name: Option<String>, }
这样修改之后,Diesel就不会再因为找不到name对应的数据库列而报错了,你的name字段可以正常作为结构体的普通字段使用,不会参与到数据库的读写操作里。
备注:内容来源于stack exchange,提问作者Eugene
相关产品推荐
相关产品推荐

