问题标签 [r2d2]

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 回答
783 浏览

sqlite - 如何从多个线程通过 rusqlite 使用 SQLite?

有许多文章解释了使用 SQLite 进行多线程访问的问题,但我找不到任何简单的解决方案。如何从多个线程同时工作的 Web 服务器访问 SQLite?

来源(仍然无法解释任何简单的解决方法):

0 投票
1 回答
157 浏览

mongodb - 如何通过 r2d2 和 actix 在 MongoDB 中保存文档?

我是 Rust 的新手,正在尝试使用 Actix-web 创建一个网络服务器,以通过 MongoDB 执行 CRUD 操作。我创建的第一个 API 是通过从 POST 请求接收到的内容在 MongoDB 中保存一个简单的文档。发布请求处理函数的代码是:

我正在使用 r2d2 为 MongoDB 建立连接池,而不是打开和关闭连接。我得到的错误是

insert_one函数文档说它接受 a但是当bson::Document我给它时,它说expected struct `r2d2_mongodb::mongodb::ordered::OrderedDocument`

这是我的 Cargo.toml 依赖项

我该如何纠正?

0 投票
0 回答
195 浏览

postgresql - Rust serde_json::value::RawValue 给出错误“不满足 trait bound ... `r2d2_postgres::postgres::types::FromSql<'_>`”

r2d2_postgres用来运行原始 SQL 并直接在 Actix 响应中返回结果。

我需要在编译时使用动态数据、类型和未知的列/数据类型等运行原始 sql。为此,我遇到了serde_json::value::RawValue

它指出:“RawValue 可用于将有效负载的部分解析推迟到以后,或者在部分有效负载只需要逐字传输到不同的输出对象的情况下完全避免解析它。”

https://docs.serde.rs/serde_json/value/struct.RawValue.html

我基本上想完全避免解析它,而只是将它发送到 Actix 客户端。

这是我的代码:

这给了我2个错误:

我对 Rust 很陌生,所以我可能缺少一些关于如何解决这个问题的概念。

0 投票
1 回答
163 浏览

multithreading - 为什么这里克隆了连接池?

在此代码示例中,来自r2d2 的 Github 页面

为什么Pool结构在循环中被克隆?

0 投票
1 回答
692 浏览

rust - 使用 r2d2 在 rust/diesel 应用程序中实现连接池

我正在尝试在 rust/diesel/rocket 应用程序中实现连接池。我不知道如何保证 establish_pooled_connection()方法的内容只被调用一次,以便准备连接池。

这是我的代码。

来自lib.rs

这里我在main.rs中使用了上述方法:

这里的问题是每个get方法(例如上面的)调用establish_pooled_connection()并且一切都被重新实例化......

我来自 java 世界,依赖注入允许我们避免重新实例化。

在 rust/diesel 应用程序中实现连接池的正确方法是什么?

0 投票
1 回答
296 浏览

rust - Rust - Cannot Access r2d2 pool connection from Rocket State

I am currently learning Rust and Rocket

Using Rust 1.54.0+Rocket 0.5.0_rc1+ Diesel 1.4.7 + r2d2 0.8.9

I created a DB Postgres connection pool with r2d2. I want to share the connection pool between requests/Routes, to do that I am trying to use Rocket Managed State. https://rocket.rs/v0.5-rc/guide/state/#managed-state

I created a DB Connection Pool, saved it on the state, but when I tried to access that DB Connection Pool from the Route. I am getting 2 error on the same line

Cell<i32> cannot be shared between threads safely

RefCell<HashMap<StatementCacheKey<Pg>, pg::connection::stmt::Statement>> cannot be shared between threads safely

here my code

The errors are for this parameter

_dbpool: &State<DBPool>

thanks in advance

0 投票
0 回答
19 浏览

mysql - 为什么 rust r2d2 示例代码在 for 循环中使用 `let pool = pool.clone()`?

我想使用 r2d2 和柴油来连接 mysql 和 sqlite3。

在示例代码中:

我不明白 pool.clone 的含义,我可以简单地删除这一行吗?

0 投票
0 回答
68 浏览

mysql - Rust 柴油与 r2d2 加载预期的结构“Mysql”,找到结构“Sqlite”?

我正在为我的 rust 应用程序编写一个数据库模块,使用柴油。

这是编译错误:

这是model.rs

这是我的源代码database.rs

你能帮忙吗?

0 投票
1 回答
36 浏览

generics - 通过柴油 r2d2 在数据库模块中实现默认特征 API?

我对生锈/柴油很陌生。尝试通过 crate 柴油和 r2d2 实现具有默认特征 API 的数据库模块(避免重复代码工作)。

这是model.rs

这是database.rs

Databasetrait 将实现所有的 API,这应该适用于 mysql 和 sqlite。但这是编译错误:

按照编译器的建议,我添加pub trait Database<Conn: diesel::Connection>,编译器给了我另一个错误:

似乎 rustc 无法检测BackendConnection. 但我不知道我应该如何解决这个问题。

请帮我解决这个问题。

0 投票
0 回答
43 浏览

postgresql - Rust r2d2 (postgres) 准备好的语句缓存

我正在尝试为每个池连接准备语句。

我基本上想做的是:

const SQL_1: &str = "SELECT foo FROM bar WHERE baz = $1";

在池连接创建期间,为每个新连接运行:

在处理程序中时:

现在怎么办?到目前为止,我想出了这个:

所以我需要以某种方式将语句存储在连接中。稍后再取回。我看到有一个可用于池连接的 extensions() 东西,但我正在努力让它工作。