问题标签 [rust-diesel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
438 浏览

rust - rustdiesel-cli 为不同环境设置多个 env 文件

我是 rust 编程的新手。我正在尝试了解 disel-cli 的工作原理。它与 express 节点项目中的 knex 非常相似。

我使用以下命令创建了两个迁移文件 -

我想通过传递环境变量来迁移到这两个区域(dev / prod )之一。我该怎么做?

0 投票
1 回答
758 浏览

rust - 如何根据 Diesel 的动态参数有条件地按列排序?

我正在尝试order_by根据外部参数指定不同的列。

这有效,但很难看:

我的 Cargo.toml 有这个:

我只想按列而不是整个查询来设置条件,例如:

这可能吗?有没有其他方法可以重构这个?

我已经阅读Querying a Diesel table with dynamic parameters,但它基本上是关于整个查询的条件,这是我试图避免的。

我还阅读了 Creating Diesel.rs queries with a dynamic number of .and()'s,这是关于过滤条件的。这可能与我所需要的很接近order_by,但我很难将这种BoxableExpression奇怪之处应用到我的案例中,因为文档中缺少针对我的确切案例的好例子,并且缺少 RLS 支持schema::items::dsl::*在我的 IDE 中显示任何类型,这样我就可以自己爬过去了。

0 投票
1 回答
542 浏览

rust - 在柴油塔中使用新型

我正在struct GuildId(i64);为我的柴油模型结构中的列使用新类型。目前我正在实现这些特征:

但是,当我尝试在以下模型结构中使用此类型时:

Channel仍然没有执行BelongingToDsl。当我尝试将其转换为特征时,它无法编译并显示以下消息:

我缺少什么特质?

0 投票
1 回答
568 浏览

mysql - 如何在 rust、diesel 中使用 sql 函数 CAST?

我正在使用 Rocket 开发一个新端点,并试图返回一个由各种结构组成的 Vec<>。

我想在柴油中复制的原始查询是:

我认识到,为了使用 CAST 函数,我需要使用sql_function!宏:

这允许我创建以下查询:

然而,当我运行这个查询时,我得到一个 SQL 查询错误:

“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 \') = CAST('rainfall'.'datetime')\' 附近使用正确的语法”

如原始 SQL 语句所示,它应为CAST('rainfall'.'datetime' as date).

我的问题是,如何将“日期”组件添加到柴油查询中?sql_function 定义中是否缺少某些内容?

谢谢你的帮助。

0 投票
1 回答
1709 浏览

postgresql - 在柴油机中执行正确连接

我有一个函数,它接受两个可选的过滤参数,如果提供了这些参数,则过滤表中的数据。为此,我创建了一个盒装查询。我想用这个盒装查询创建一个右连接。Diesel 的当前文档没有提到 right join,但似乎更喜欢这种belonging_to方法。我已将代码简化为一个示例:

目的是如果user_id指定了参数,则只Groups返回至少有一个UserGroup这样的行user_group.user_id == user_id。如何运行此查询?我需要以belonging_to某种方式使用该功能吗?

0 投票
1 回答
105 浏览

rust - 如何使用应该直接在 Rust 二进制文件中扩展的库共享模型?

我希望能够在我正在构建的服务的代码库中共享数据结构(模型)。我目前已将代码拆分为一个名为的库domain和一个名为log_service.

domain库中,我定义了一个包含 Log 信息的结构,如下所示。

log_service二进制文件中,我想使用柴油作为数据库 ORM,并将domain库中定义的这个结构用作表。柴油文档指出,为了将此结构用作数据库表,您需要派生某些特征(例如Queryable)并可能应用其他属性。

然而,Rust 不允许在另一个 crate 中扩展这个结构,并且由于 Rust 中不存在继承,通常可以选择使用组合来包装domainLog。但是因为diesel 使用struct 直接映射到表,所以不可能使用组合来公开字段,因为它们应该是struct 的顶层。

最好我不想在两个板条箱中复制粘贴这个结构。我一直在考虑使用宏从单一来源在两个代码库中生成这些结构,这仍然允许在二进制文件中扩展日志。

解决这个问题的最佳方法是什么?

0 投票
1 回答
522 浏览

rust - 如何在 Rust Diesel 中使用时间戳和间隔进行算术运算

我一直在尝试使用过滤器表达式构建柴油查询,这些表达式对时间戳和时间间隔进行算术和比较。我相信使用开箱即用的柴油无法编写以下表达式。不幸的是,我采用了使用该sql(...)功能的大锤方法:

我的(缩写)架构:

我的问题:

  1. 我错了吗?这可以用没有自定义类型的柴油编写吗?
  2. 如果这不能用香草柴油写,我怎么能把它分解成一个更安全、对柴油更友好的表达式?哪些部分是自定义的,我需要实现哪些特征?
0 投票
1 回答
536 浏览

database - 返回使用 Rocket 和 Diesel (Rust) 在 PostgreSQL 中创建的单个记录

我正在尝试基于教程构建一个简单的网络应用程序:。它们都使用略有不同的方法,并且是为使用的库的旧版本编写的,因此当前的 Diesel 和 Rocket API 略有不同。我想响应 POST 请求返回创建的记录或记录 ID。此时我只能返回记录列表 - 单个记录列表(尝试返回单个记录,基于Vec.first()不编译)。

货物.toml

模型.rs

架构.rs

路线.rs

0 投票
1 回答
212 浏览

postgresql - Rust:如何将 SocketAddr 转换为 IpNetwork?

使用 Diesel 和 Rocket,我希望能够记录请求来自的 IP。是类似的讨论,但没有结论。Diesel 将 Postgresinet类型映射到IpNetwork,但 RocketSocketAddr从请求数据中返回。如何转换SocketAddrIpNetwork

模型.rs

路线.rs

0 投票
1 回答
2969 浏览

postgresql - 不能使用 UUID 作为主键:Uuid:diesel::Expression is not满足

我想将 UUID 字段作为 Postgres 表中的主字段,但出现以下错误:

一些较老的问题是关于柴油的 UUID,但没有一个是可插入的,我特别得到了错误。我正在使用带有 actix web 的柴油。

这是我的模型:

还有我的表模式

我发现一些旧帖子表明该字段可能可以为空,但idPRIMARY KEY我的 up.sql 表中,所以它不能为空。

该表是从diesel-cli 生成的,那里似乎没有任何问题。

这是我的 Cargo.toml