我有一张有Jsonb专栏的表格

diesel::table! {
    user (id) {
        id -> Uuid,
        data -> Jsonb,
        ...
    }
}

我创建了一个类似于这样的 struct :

use crate::schema::user;
use diesel::prelude::*;
use serde::{Deserialize, Serialize};
use uuid::Uuid;

#[derive(Serialize, Deserialize, Queryable, Insertable)]
#[table_name = "user"]
pub struct User {
    pub id: Uuid,
    pub data: serde_json::Value,
    ...

}

...

此代码报告数据字段有一些问题

pub data: serde_json::Value
    ^^^^ the trait `diesel::Expression` is not implemented for `Value`

我对铁 rust 和柴油是新手,我不知道它是如何实现的.我以为Serde_json就是我所需要的,但我想我还缺少了其他东西.

这些是我的Cargo.toml个版本中的版本

actix-web = "4.4.0"
actix-rt = "2.9.0"
chrono = { version = "0.4.31", features = ["serde"] }
diesel = { version = "2.1.4", features = ["postgres","r2d2", "uuid", "chrono"] }
diesel_migrations = "2.1.0"
dotenv = "0.15.0"
env_logger = "0.10.1"
lazy_static = "1.4.0"
listenfd = "1.0.1"
log = "0.4.20"
r2d2 = "0.8.10"
rand = "0.8.5"
rust-argon2 = "2.0.0"
serde = { version = "1.0.193", features = ["derive"] }
serde_json = "1.0.108"
uuid = { version = "1.6.1", features = ["serde", "v4"] }

推荐答案

您未在Cargo.toml中启用serde_json extra功能:

diesel = { version = "2.1.4", features = ["postgres","serde_json","r2d2","uuid","chrono"] }

此功能标志添加了必要的特征实现.

pub struct User {
    pub id: Uuid,
    pub data: serde_json::Value,
    ...

}

Postgresql相关问答推荐

利用PostgreSQL查询中表的顺序来计算包含每次时间的时间范围

在Docker容器内的Postgres,如何通过Promail将JSON登录到Loki?

如何在PostgreSQL中正确删除数据库

在Postgres中,如何删除包含N个自然数的表,并替换为生成子查询?

Postgres从spark触发post-write

如何返回old_ids和重复行的映射';来自PostgreSQL函数的s new_id

对 VOLATILE 函数的调用会 destruct SELECT 语句的原子性

AWS RDS Postgres 性能缓慢的数据传输

Postgis 不只使用索引扫描

函数将多列作为单列而不是多列返回

如何使用 ActiveRecord json 字段类型

Postgres 图像未创建数据库

在 PostgreSQL docker 镜像中创建表

整数除法返回 0

在查询中的复合外键/主键列上连接表

如何在可选参数上查询 postgres?

在 postgreSQL 中更改序列名称

在不存在的行上有select for update块

如何在 postgres 模式中列出关系

Postgresql:备份所有表 struct ,但只备份少数数据表