在 Diesel 1.x 中,我定义了一个反映
jsonb
数据类型的模型,如下所示:
use diesel::pg::types::sql_types::Jsonb;
#[derive(FromSqlRow, AsExpression, serde::Serialize, serde::Deserialize, Debug, Default)]
#[sql_type = "Jsonb"]
pub struct ChannelTag {
pub id: i32,
pub name: String,
}
今天我将 Diesel 升级到 2.0.4 并编译项目时,出现错误:
error[E0603]: module `types` is private
--> src/model/app/cruise/channel/channel_tag.rs:1:17
|
1 | use diesel::pg::types::sql_types::Jsonb;
| ^^^^^ private module
他们似乎将
types
模块转为私有,不再对外公开?那么我应该如何定义 Diesel 2.x 中的 jsonb
数据类型呢?
它只是移动了模块。使用 Postgres 数据库时,您可以在
diesel::pg::sql_types
中找到它,甚至可以在 diesel::sql_types
中找到它。因此,迁移后您的代码应如下所示:
use diesel::pg::sql_types::Jsonb;
#[derive(FromSqlRow, AsExpression, serde::Serialize, serde::Deserialize, Debug, Default)]
#[diesel(sql_type = Jsonb)]
pub struct ChannelTag {
pub id: i32,
pub name: String,
}
专业提示:当您遇到导入问题时,您可以通过首先提供文档快速搜索来自己回答此类导入问题。模块重新组织是更新库主要版本的自然部分。