如何将jsonb数据模型迁移到Diesel 2.x?

问题描述 投票:0回答:1

在 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
数据类型呢?

postgresql rust jsonb rust-diesel
1个回答
1
投票

它只是移动了模块。使用 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,
}

专业提示:当您遇到导入问题时,您可以通过首先提供文档快速搜索来自己回答此类导入问题。模块重新组织是更新库主要版本的自然部分。

© www.soinside.com 2019 - 2024. All rights reserved.