问题标签 [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 回答
2682 浏览

generics - Diesel 的 find 或 filter 的一般用法来执行删除

我正在尝试使用通用 Diesel 函数来缩小重复性任务,例如基于主键删除一行。

我得到了相对较快的行的通用插入,但删除查询似乎相当困难。我尝试通过使用find()和来解决它filter()。我还咨询了类似的主题12,但没有成功。

使用find

这会导致以下我无法解释的错误:

使用filter()

除了前面的错误,这里还有一条关于id在数据结构中未知的错误信息。我可以考虑一个缺失的特征,它保证了该行的存在,但我还没有发现任何关于这种行为的信息。

0 投票
0 回答
212 浏览

sql - 为什么 Diesel 在列指定长度时无法迁移 PostgresSQL 数据库?

当我使用 生成迁移时diesel migration generate customers,如果up.sql迁移文件夹中的文件不包含用于列长度的括号:

当我运行时diesel migration run --database-url=postgres://<info>,它成功迁移了数据库。

为什么会出现以下情况:

引发错误:

我的 SQL 并不令人惊讶,因此我直接使用 ORM,但我相信 SQL 查询都是完全有效的,我不知道去哪里调试。

0 投票
3 回答
6893 浏览

postgresql - 特性 `diesel::Expression` 没有为`bigdecimal::BigDecimal` 实现

我正在尝试创建一个可以在柴油中用于插入的结构。具体来说,我正在使结构可插入。编译时出现此错误。

我有一个试图Insertable通过派生属性创建的结构。我有一个名为的字段Bounty,它应该代表金钱,所以我使用BigDecimal它作为类型。编译后,我得到标题中的错误。我也尝试过使用f64,但这给出了同样的错误。

我在它自己的文件中有我的结构,这是整个代码。该结构Thread编译没有问题。错误发生在InsertableThread使用BigDecimal. 这是导致的错误。

我正在使用 Rust 1.34、柴油 1.4.2 和 Postgres 11。

我愿意更改数据库、Postgres 或 Rust 代码中的类型。数据库numeric在我尝试过的 Rust 代码中使用 andf64BigDecimal. 我也愿意自己直接实现这个特征,但我需要一些关于如何做到这一点的指导,因为我找不到样本。

0 投票
1 回答
916 浏览

rust - 使用选项具有 Diesel 的可插入特性

我有以下模型:

和 schema.rs:

但是,当我尝试编译此代码时,出现以下错误:

我需要什么才能让它工作?我环顾四周,但我发现的唯一类似问题是当某人的表中有超过 16 列时,这里不是这种情况。

0 投票
1 回答
74 浏览

rust - 推断类型构造函数的类型

这似乎是一个具体的问题,但我会尽量概括它。随意编辑标题,因为我是 Rust 新手,不知道如何简洁地表达它。

我想做的最好用例子来解释。

我正在使用柴油并生成schema.rs它定义了表格CatsDogs(使用table!宏)。

现在我为和(我实现的2个结构)编写了get_all函数CatDog

但由于他们基本上做同样的事情,我很想用一种get_all<T>方法来概括它们。

我想创造一个特征:

当然,我Resource现在需要定义,要么是Cats要么Dogs。所以我想做一个解决方法并定义一个get_resource我可以覆盖的方法CatDog提供他们尊重的资源。这是类型diesel::query_dsl::RunQueryDsl<Conn>

问题是我不知道Conn必须实现什么类型约束(然后是该类型的类型参数,等等),我认为应该有一种更简单的方法,然后从柴油逆向工程整个类型链。

这失败了expected 1 type argument

我的方法是否有“修复”(例如编译器自动推断类型)或者设计是否损坏?如果是后者,我该如何概括该get_all方法?

PS:Queryabletrait 也是如此,它应该是 的约束T,但又需要 2 个类型参数。

0 投票
1 回答
120 浏览

rust - FromSql::from_sql 的参数的生命周期是多少?

我将 Diesel 与 Postgres 一起使用,并希望将text字段查询为*const str. Diesel 实现FromSql*const str.

该文档描述:

返回的指针在 的参数的生命周期内有效from_sql

的论点的寿命是from_sql多少?它与连接的生命周期相同吗?

0 投票
1 回答
689 浏览

rust - 为什么在将使用 Diesel 特征的函数重写为特征方法时会出现“溢出评估需求”?

我正在尝试使用 Diesel 添加分页。如果我使用函数,编译器能够检查泛型类型的边界,但如果我尝试与 trait 的实现相同,则不能。

这是一个简单的工作示例:

OffsetDslLimitDsl是 Diesel 的特征,它提供了方法offsetlimit

当我尝试将此方法提取为特征并像这样实现它时

我收到一条不太清楚的错误消息。

我知道这意味着编译器无法检查 上的条件T::Output,但不清楚与具有相同条件的简单函数有什么区别。

我正在使用 Rust 1.35.0 和 Diesel 1.4。

0 投票
1 回答
1992 浏览

rust - 当我的密码包含 at 符号 (@) 时,如何指定 Diesel DATABASE_URL?

我按照他们的官方文档开始使用 Diesel 。我也安装了 PostgreSQL。我的数据库用户名是postgres,密码是1schoollife@

我从

结果:

我创建了一个迁移:

迁移数据库时出现以下错误:

0 投票
1 回答
1218 浏览

rust - 如何使用 Diesel 在 sqlite 中存储任意 JSON 对象

我有一个输入 JSON:

我想将它存储在一个 sqlite 数据库中,以便稍后以完全相同的值响应一些 API 请求。

这是我的迁移:

我的Cargo.toml

使用以下代码:

我收到以下错误:

我可以创建一个带有StringJSON 表示的模型并为 API 输入类型派生From/ Into,但我现在不想.into()在我的代码中到处插入。一个 DRY 解决方案将按照我在附加代码中提出的那样执行此操作。

0 投票
0 回答
103 浏览

json - 如何序列化 Template::render 的上下文

我正在尝试将 Handlebars 与 Rocket 和 Diesel 一起使用。不幸的是,我没有让这种组合起作用。

首先,我使用本教程构建了一个简单的 rest-API 。然后我尝试在不使用数据库连接的情况下测试车把模板。这部分效果很好。

接下来,我尝试了使用数据库连接的相同模板。如果我对模板的上下文部分使用与 API 中相同的方法,我会得到我不理解的编译器消息。如果 REST API 使用来自 serde 的 JSON,我希望输出应该是Serialize.

故障功能:

结构:

数据库查询:

我希望编译成功。错误信息如下: