我正在尝试将 ORM 添加到现有结构中:
#[derive(Debug, Queryable, Selectable)]
#[diesel(table_name = crate::schema::tokens)]
pub struct Token {
pub public_key: String,
pub name: Option<String>,
cannot find type `name` in module `crate::schema::tokens`
not found in `crate::schema::tokens`
在结构体的字段上方添加哪些宏来忽略数据库操作?
你不能。
派生
Queryable
会创建一个实现,当以此类型加载时,该实现将期望Option<String>
从数据库返回等效项。并Selectable
创建一个用于SELECT ...
子句的实现,并将要求一个name
。这些派生宏上没有忽略字段的属性。坦白说,这不是 Diesel 的预期用途。类型应该与数据库及其查询完全对应。如果您对业务逻辑和持久化内容有不同的概念,则应使用不同的类型并自行实现适当的转换。