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

rust - 为柴油模型定义结构时出现错误未定义类型或模块

我无法让柴油在 Rust 上运行。这个项目的背景是一个使用 postgres 作为服务器来保存分数和使用柴油访问 postgres 的分数统计系统。当我在 models.rs (命名Score)中定义一个结构时,我得到这个错误:

schema.rs 的内容是:

这是我的models.rs:

我正在尝试使用 add_entry.rs 向其中添加条目:

在 main.rs 中,我有:

在connect.rs(与服务器连接)中,我有:

我的 Cargo.toml 的依赖部分的内容是

为了得到这个错误,我跑来diesel setup设置一切,,,,diesel migration run再次diesel migration redodiesel migration run最后cargo build

我的完整代码可以在这个存储库中找到。

我应该怎么做才能消除这个错误?谢谢。

0 投票
1 回答
1525 浏览

rust - 如何在 Diesel 中对 Postgres 数据库执行删除子查询?

我在 Postgres 数据库中有以下架构:

我正在尝试在 Diesel 中编写以下查询:

$VAR是我的应用程序传递的变量。

我第一次尝试写这个是:

这可以编译,但不起作用:SELECTID 的语句始终返回 0。它与 A 中插入的任何记录都不匹配,即使我手动检查了它们是否存在。我确定我在匹配的方式上存在错误(&str可能是&String?),但我决定尝试不同的解决方案,因为我不喜欢这个解决方案,因为它必须针对数据库执行两个单独的语句.

我的第二次尝试如下所示:

这对我来说看起来更像 Diesel 惯用的(剧透警报,我几乎不知道框架)但果然,它没有编译:

当我意识到这似乎是一个微不足道的操作(删除本身)时,我正在研究上述特征,我最好寻求帮助。

如何正确编写惯用的 Diesel 代码来执行我要执行的删除语句?

0 投票
1 回答
417 浏览

sql - 使用派生可插入的浮点数

我从 Rust 中的柴油和火箭开始,在将浮动值插入数据库时​​遇到了问题。我的结构看起来像:

我得到这个错误:特征绑定f64: diesel::Expression不满足标签:特征diesel::Expression没有实现f64,注意:需要因为对 impl 的diesel::expression::AsExpression<diesel::sql_types::Numeric>要求f64

我读过柴油有点使用它自己的数据/SQL 类型,但我不知道如何声明一个浮点数。我还尝试使用带有类似错误消息的diesel::sql_types::Float。

0 投票
2 回答
1869 浏览

database - 如何在生产中使用 Rocket 运行 Diesel 迁移?

我需要在生产环境中为基于 Rocket 的应用程序运行 Diesel 数据库迁移。通常有几种方法可以为数据库执行迁移:

  1. 在应用程序启动时。
  2. 与应用程序启动分开。

我更喜欢使用--migrate应用程序二进制标志调用的第二个选项,但由于目标应用程序相当简单,第一种方法就可以了。

Diesel 问题跟踪器中有一个关于在生产中运行迁移的线程,并建议如何执行此操作:

  1. 添加diesel_migrations到您的依赖项
  2. 在你的板条箱中加入一个extern crate diesel_migrations,并确保用它来装饰它#[macro_use]
  3. 在代码的开头,添加embed_migrations!()
  4. 要运行迁移,请使用embedded_migrations::run(&db_conn)

main.rs我做了:

这会导致错误:

如何解决?

0 投票
1 回答
42 浏览

rust - 当用户登录而不使用 N+1 查询时,将数据添加到 Diesel 结果

我有一个电影数据库,用户可以使用以下模型将电影标记为已观看和收藏:

我将如何处理我想列出添加到数据库中的 100 部最新电影并在用户登录时还包括每部电影的用户数据同时避免 N+1 查询问题的情况?

我想我可以为movies表添加另一个结构,其中还包含可选的用户数据,但我不确定如何将它与 Diesel ORM 一起使用。

0 投票
1 回答
648 浏览

rust - 是否可以在柴油中使用没有主键的表?锈

我是 Rust 新手,我正在使用 Diesel 和 Actix-web 制作 API。我在 pgsql 和 mongodb 中有一个数据库,我仅将柴油 1.4.4用于pgsql

首先,我做了一个测试,用它的表和主键创建了一个数据库,一切正常。但是,总会有一些表没有主键而只有外键。

我注意到 Diesel 只支持带有主键的表,但是如果您想使用没有主键而只有外键的表,有没有办法导入该表?手动可以吗?也就是说,在 schema.rs 和我的 models.rs 中定义它。

0 投票
2 回答
89 浏览

rust - 如何使用 Diesel 连接和 Gtk-rs 事件?

当在 gtk 条目中按下 Enter 键时,我正在尝试使用 Diesel 从数据库中获取对象。我的想法是在 main 函数中创建一个 Diesel SQLite 连接,然后在每次需要时借用它。

为此,我正在尝试使用一个非常简单的 MVC。这个想法是将连接传递给所有控制器并重用它。我知道这里需要一生。

编译时我得到这个:

这个错误是因为函数connect_activate有一个静态参数:fn connect_activate<F: Fn(&Self) + 'static>.

我不想在用户每次按下 Intro 键时使用返回连接的函数来初始化连接。相反,我想借用这种联系。

最有效的方法是什么?

非常感谢你。我希望你明白一切。

0 投票
2 回答
726 浏览

rust - 如何使用 Diesel 格式化 SQL 结果?

我正在使用 Diesel 使用 JOIN 查询 PostgreSQL 中的数据库:

我的模型:

结果符合预期,但我需要为sales::date_salepgadmin 中使用to_char(date_sale, 'dd/mm/YYYY').

是否可以to_char在 Diesel 中使用,或者我可以通过什么方式修改 Diesel ORM 带给我的数据?

0 投票
1 回答
394 浏览

rust - 将 NixOS 升级到 20.03 后,具有柴油和 mysql 依赖项的板条箱不再针对 mariadb 进行编译

我的 crate 依赖于启用了该功能的柴油,在将我的系统从NixOS 19.09mysql升级到 20.03 后不再编译。似乎唯一的重大变化是将包从 10.2.17 更新到 10.3.18。Rust 工具链等没有任何变化(它被静态固定到每晚2020-04-20)。mariadb-servernix-shell

很长的编译器消息以:

我该怎么办?

0 投票
1 回答
317 浏览

mysql - 如何从辅助方法动态返回 Diesel 等式表达式?

我有一个枚举:

我的数据库中有一个名为“roles”的表,如下所示:

如何在使用Diesel而不是原始 SQL 查询时对 a 执行匹配Role并获取数据库中的相应列?

我可以从与角色匹配的方法返回 Diesel 表达式,但它不适用于我的插入语句:

上面的代码给我留下了以下编译错误:

我在这里为这个问题创建了一个可重现的示例。