问题标签 [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 投票
0 回答
861 浏览

sqlite - 无法让 Diesel 推断 SQLite 表中可为空的时间戳列

我正在尝试使用 Diesel 的推理功能来处理包含可为空的时间戳列的 SQLite 表。此GitHub 项目的旧版本中提供了完整示例。

books表定义如下:

我正在尝试使用以下结构查询它:

但是,当我尝试实际执行查询时,如下所示:

我收到以下错误消息:

我不明白为什么没有执行 forchrono::naive::datetime::NaiveDateTime 以及我应该做些什么来实现它。

我正在使用稳定的工具链,目前是 1.18.0,这些是我的依赖项:

0 投票
0 回答
139 浏览

rust - 关联引用类型作为值类型

这是Diesel 的一个特征

这是一个派生 impl 的 User 模型Identifiable

根据文档, Identifiable 的实现是在结构的引用上派生的,即 on &User。这是find在. 用户的实现如下。idIdentifiable

Findon a的含义User

编译时的错误:

因为我想找到一个用户i32,所以 impl<&'a Self as Identifiable>::Id会将 id 称为&i32. 我只想id成为一个值而不是引用类型。

当应用于引用类型时,如何将idon的类型定义find为值类型?Identifiable&User

0 投票
1 回答
8815 浏览

rust - 无法推断“U”的类型

我正在使用 Rust 和 Diesel:

编译器错误:

0 投票
1 回答
1570 浏览

rust - 我如何获得选项而不是一个选项> 来自仅返回 1 或 0 条记录的 Diesel 查询?

我正在查询名为messages;的表中的现有记录。然后将此查询用作“查找或创建”功能的一部分:

我已将此设置为可选,因为在这种情况下,查找记录和查找无记录都是有效的结果,因此该查询可能会返回 a Vecwith oneMessage或 empty Vec,所以我总是最终检查是否Vec为空或不使用像这样的代码:

然后如果它不是空的,则使用以下代码将第一个Message作为Vec我找到的消息

我总是取第一个元素,Vec因为记录是唯一的,所以查询只会返回 1 或 0 条记录。

这对我来说感觉有点乱,似乎采取了太多步骤,我觉得好像有查询记录那么它不应该返回Option<Message>Option<Vec<Message>>或者None如果没有与查询匹配的记录。

0 投票
1 回答
892 浏览

rust - 了解 Diesel 中的特征绑定错误

我想编写一个函数,将一个类型插入到数据库连接参数是通用的数据库中,以便它可以在多个后端工作。

我想出了以下函数来使用通用连接插入对象:

如果我不包含SupportsDefaultKeyword约束,则该函数将无法编译。使用 aSqliteConnection作为连接参数调用它时,出现以下错误:

database::create_label(&db_conn, &label); ^^^^^^^^^^^^^^^^^^^^^^ the trait 'diesel::backend::SupportsDefaultKeyword' is not implemented for 'diesel::sqlite::Sqlite'

这意味着使用 a 插入数据SqliteConnection不起作用。显然情况并非如此,并且进一步改变create_label以使其SqliteConnection直接工作就可以了。

为什么泛型函数需要SupportsDefaultKeyword约束而函数获取SqliteConnection不需要?

这是一个说明问题的最小示例。根据评论,第 60main.rs行将不会因上面的错误而编译,而第 61 行会编译:

0 投票
1 回答
520 浏览

rust - Diesel 是否支持 Postgres `point` 类型?

我想使用Postgres 类型。我没有在 Diesel 的类型列表中看到此类型。

编写包含point列的模型的正确方法是什么?

0 投票
2 回答
5028 浏览

postgresql - 使用 Diesel 执行插入或更新

我正在尝试使用Diesel和 PostgreSQL 执行插入或更新。

我努力了:

哪里objectsstd::vec::Vec<Struct>- 导致编译器错误:

查询生成器中有一个on_conflict_do_nothing(),但我似乎找不到类似on_conflict_do_update()or的东西on_conflict_do_replace()

0 投票
1 回答
836 浏览

generics - 如何通过抽象将使用 Diesel 的多个功能组合为一个?

我有以下两个功能:

我想将两者结合为一个功能。我尝试了几种不同的方法,但是

  1. 我对 Rust 很陌生
  2. 柴油有奇怪的类型(或者至少感觉是这样)

有哪些方法可以合并这两个功能(仅在字段上有所不同,types::ethereumETHRecord合并为一个统一的功能get_most_recent_entry

这些是我的数据库结构定义(SQL 模式是等效定义的):

和类型

和类型

0 投票
0 回答
584 浏览

rust - 在 musl 上编译 Diesel 迁移:未定义的符号 strlcpy

以下是 Diesel 的diesel_migrations板条箱无法使用clux/muslrust映像通过 Docker 在 musl 上编译的最小工作示例。它给出了一个undefined symbol: strlcpy错误。该代码在本机系统 (macOS) 上运行良好。

码头工人命令

满载货物输出

货运.toml

src/main.rs

迁移/2018-02-07-164146_create_post/up.sql

迁移/2018-02-07-164146_create_post/down.sql

0 投票
1 回答
3244 浏览

rust - 使用动态数量的 .and() 创建 Diesel.rs 查询

在玩 Diesel 时,我一直在编写一个函数,该函数将Strings 的向量作为输入并执行以下操作:

  1. 将所有Strings 组合成一个大查询
  2. Connection
  3. 处理结果
  4. 返回一个Vec

如果我一步构建查询,它就可以正常工作:

如果我尝试以更多步骤生成查询(需要使用输入向量的可变长度),我无法编译它:

这会产生以下错误:

我不明白为什么 Rust 需要 aLike而不是And. 函数 an 行 line 标记<1>返回 an And,因此 anAnd存储在inner.

我错过了什么?为什么第一个代码可以编译而第二个不会?生成这种查询的正确方法是什么?