问题标签 [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.
rust - rustdiesel-cli 为不同环境设置多个 env 文件
我是 rust 编程的新手。我正在尝试了解 disel-cli 的工作原理。它与 express 节点项目中的 knex 非常相似。
我使用以下命令创建了两个迁移文件 -
我想通过传递环境变量来迁移到这两个区域(dev / prod )之一。我该怎么做?
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 中显示任何类型,这样我就可以自己爬过去了。
rust - 在柴油塔中使用新型
我正在struct GuildId(i64);
为我的柴油模型结构中的列使用新类型。目前我正在实现这些特征:
但是,当我尝试在以下模型结构中使用此类型时:
Channel
仍然没有执行BelongingToDsl
。当我尝试将其转换为特征时,它无法编译并显示以下消息:
我缺少什么特质?
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 定义中是否缺少某些内容?
谢谢你的帮助。
postgresql - 在柴油机中执行正确连接
我有一个函数,它接受两个可选的过滤参数,如果提供了这些参数,则过滤表中的数据。为此,我创建了一个盒装查询。我想用这个盒装查询创建一个右连接。Diesel 的当前文档没有提到 right join,但似乎更喜欢这种belonging_to
方法。我已将代码简化为一个示例:
目的是如果user_id
指定了参数,则只Groups
返回至少有一个UserGroup
这样的行user_group.user_id == user_id
。如何运行此查询?我需要以belonging_to
某种方式使用该功能吗?
rust - 如何使用应该直接在 Rust 二进制文件中扩展的库共享模型?
我希望能够在我正在构建的服务的代码库中共享数据结构(模型)。我目前已将代码拆分为一个名为的库domain
和一个名为log_service
.
在domain
库中,我定义了一个包含 Log 信息的结构,如下所示。
在log_service
二进制文件中,我想使用柴油作为数据库 ORM,并将domain
库中定义的这个结构用作表。柴油文档指出,为了将此结构用作数据库表,您需要派生某些特征(例如Queryable
)并可能应用其他属性。
然而,Rust 不允许在另一个 crate 中扩展这个结构,并且由于 Rust 中不存在继承,通常可以选择使用组合来包装domain
Log。但是因为diesel 使用struct 直接映射到表,所以不可能使用组合来公开字段,因为它们应该是struct 的顶层。
最好我不想在两个板条箱中复制粘贴这个结构。我一直在考虑使用宏从单一来源在两个代码库中生成这些结构,这仍然允许在二进制文件中扩展日志。
解决这个问题的最佳方法是什么?
rust - 如何在 Rust Diesel 中使用时间戳和间隔进行算术运算
我一直在尝试使用过滤器表达式构建柴油查询,这些表达式对时间戳和时间间隔进行算术和比较。我相信使用开箱即用的柴油无法编写以下表达式。不幸的是,我采用了使用该sql(...)
功能的大锤方法:
我的(缩写)架构:
我的问题:
- 我错了吗?这可以用没有自定义类型的柴油编写吗?
- 如果这不能用香草柴油写,我怎么能把它分解成一个更安全、对柴油更友好的表达式?哪些部分是自定义的,我需要实现哪些特征?
postgresql - Rust:如何将 SocketAddr 转换为 IpNetwork?
使用 Diesel 和 Rocket,我希望能够记录请求来自的 IP。这是类似的讨论,但没有结论。Diesel 将 Postgresinet
类型映射到IpNetwork
,但 RocketSocketAddr
从请求数据中返回。如何转换SocketAddr
为IpNetwork
?
模型.rs:
路线.rs:
postgresql - 不能使用 UUID 作为主键:Uuid:diesel::Expression is not满足
我想将 UUID 字段作为 Postgres 表中的主字段,但出现以下错误:
一些较老的问题是关于柴油的 UUID,但没有一个是可插入的,我特别得到了错误。我正在使用带有 actix web 的柴油。
这是我的模型:
还有我的表模式
我发现一些旧帖子表明该字段可能可以为空,但id
在PRIMARY KEY
我的 up.sql 表中,所以它不能为空。
该表是从diesel-cli 生成的,那里似乎没有任何问题。
这是我的 Cargo.toml