- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嘿,我正在创建一个 API 来返回用户及其个人资料
我有来自两个独立数据库的两个表,用户和配置文件
fn handle(
&mut self,
query_strings: SearchUsersQueryStrings,
_: &mut SyncContext<Self>,
) -> Self::Result {
let gateway_conn: &PgConnection = &self.1.get().unwrap();
let own_conn: &PgConnection = &self.0.get().unwrap();
let pattern = format!("%{}%", query_strings.username);
let found_users = users
.filter(username.like(pattern))
.get_results::<User>(gateway_conn)?;
let profile = Profile::belonging_to(&found_users)
.load::<Profile>(own_conn)?
.grouped_by(&found_users);
let data = found_users.into_iter().zip(profile).collect();
Ok(data)
}
这里的坏处是数据类型 result 是 ,解析起来非常难看
[
[
{
"id": 22,
"username": "412212512",
"email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4372717072327271717172717103242e222a2f6d202c2e" rel="noreferrer noopener nofollow">[email protected]</a>",
"avatar": null,
"created_at": "2022-02-21T09:31:29.855851"
},
[
{
"id": 3,
"user_id": 22,
"status": "qqq",
"description": "xxx",
"created_at": "2022-03-07T22:53:17.491532",
"updated_at": null,
"deleted_at": null
}
]
],
[
{
"id": 25,
"username": "1412drew212512",
"email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="31000302004000004243544603030300030371565c50585d1f525e5c" rel="noreferrer noopener nofollow">[email protected]</a>",
"avatar": null,
"created_at": "2022-02-21T10:37:04.588795"
},
[]
],
]
但我想要这样的东西:
[
{
"id": 22,
"username": "1412212512",
"email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7c4d4e4f4d0d4d4e4e4e4d4e4e3c1b111d1510521f1311" rel="noreferrer noopener nofollow">[email protected]</a>",
"avatar": null,
"created_at": "2022-02-21T09:31:29.855851",
"profile": {
"id": 3,
"user_id": 22,
"status": "qqq",
"description": "xxx",
"created_at": "2022-03-07T22:53:17.491532",
"updated_at": null,
"deleted_at": null
},
....
]
如果我使用load
func 在配置文件查询上它将返回 Vec<Profile>
但每个用户都有一条 Profile 记录,如果我不使用 load
并使用first
相反,我无法使用 grouped_by
超过它
最佳答案
创建一个名为 UserAPI
的 struct
,如下所示:
pub struct UserAPI {
#[serde(flatten)]
pub user: User,
pub profile: Profile,
}
然后在压缩数据后执行以下操作:
fn handle(
&mut self,
query_strings: SearchUsersQueryStrings,
_: &mut SyncContext<Self>,
) -> Self::Result {
let gateway_conn: &PgConnection = &self.1.get().unwrap();
let own_conn: &PgConnection = &self.0.get().unwrap();
let pattern = format!("%{}%", query_strings.username);
let found_users = users
.filter(username.like(pattern))
.get_results::<User>(gateway_conn)?;
let profile = Profile::belonging_to(&found_users)
.load::<Profile>(own_conn)?
.grouped_by(&found_users);
let data = found_users.into_iter().zip(profile).collect();
let users_with_profile: Vec<UserAPI> = data
.into_iter()
.map(|(user, profile)| {
UserAPI {
user,
profile,
}
})
.collect();
Ok(users_with_profile)
}
关于Rust Diesel 一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71392523/
我正在努力学习 Diesel以下 this tutorial .这是我使用 Diesel 创建的演示程序: #![recursion_limit = "128"] #[macro_use] exter
我已经使用 diesel 的连接池系统设置了一个系统, r2d2 , 和 r2d2-diesel充当我的 Web 应用程序的 API 主机。我一直在关注这个 blog post作为帮助我进行设置的基础
我是 Rust 的新手,我想尝试 Diesel 和 Postgres。我已按照此处描述的步骤操作: https://diesel.rs/guides/getting-started 但不幸的是,当它进
我陷入了这个错误,不知道如何修复它。 有什么想法我做错了什么吗? 错误: Compiling actix-test v0.1.0 (/Users/b/o/d/Rust/actix-test) err
我是使用rust 和柴油机的新手。我正在尝试对我的查询执行以下操作: 计数 选择 订购 限制 但是我收到了错误。 我正在使用 postgres 数据库。 我在评论中的查询上方添加了确切的错误。 这是我
嘿,我正在创建一个 API 来返回用户及其个人资料 我有来自两个独立数据库的两个表,用户和配置文件 fn handle( &mut self, query_string
嘿,我正在创建一个 API 来返回用户及其个人资料 我有来自两个独立数据库的两个表,用户和配置文件 fn handle( &mut self, query_string
rust 版本 1.18.3柴油版本 1.0.0Postgres 11在 debian 10 上 我正在尝试使用 Diesel ORM 和 postgres 在 Rust 中连接两个表。该表是帖子和用
diesel 是否可以在运行时监听和更改其模式?例如,如果在运行时添加表,我们能否在程序启动后使用 table! 宏检测变化并创建适当的表? 最佳答案 没有。模式是在编译时确定的。迁移数据库后,您需要
我想以声明方式编写表模式,例如 GORM 自动迁移 https://gorm.io/ko_KR/docs/migration.html Django 迁移 https://docs.djangopro
是否可以使用 Diesel 在 Rust 中创建新数据库?我在文档中找不到任何内容。我对 SQLite 特别感兴趣。 最佳答案 TBH,我并没有真正在文档中进行搜索,但是在 Cargo.toml 方面
我有一个函数,它接受两个可选的过滤参数,如果提供了这些参数,则过滤表中的数据。为此,我创建了一个盒装查询。我想用这个盒装查询创建一个正确的连接。 Diesel 的当前文档没有提到右连接,但它似乎更喜欢
我正在尝试根据外部参数为 order_by 指定不同的列。 这行得通,但是很丑: #[macro_use] extern crate diesel; use crate::diesel::prelud
我在 PostgreSQL 中使用 Diesel。我添加了我的迁移,它们运行良好,输出了 schema.rs 中的所有内容。文件。直到我注意到我错过了 created_at我的一些迁移的字段。我编辑了
我已经实现了 Diesel 的 Rust 项目,它生成了包含我所有表的 schema.rs 文件: table! { users (id) { id -> Uuid,
我正在尝试创建一个引用同一个表两次的结构。这样做的目的是创建一种类别的层次结构。这是我要为以下表格做的事情: create table product_category_rollup( id
我正在尝试使用通用 Diesel 函数来减少重复性任务,例如根据主键删除行。 我的一般行插入工作相对较快,但删除查询似乎相当困难。我尝试使用 find() 和 filter() 解决它。我也引用了类似
我有一个 SQL 表,我想通过 Diesel 使用它: CREATE TABLE records ( id BIGSERIAL PRIMARY KEY, record_type SMA
我有以下两个功能: pub fn get_most_recent_eth_entry(conn: &SqliteConnection) -> Result { let res = types:
我正在遵循 Diesel 示例指南,我的项目看起来完全是 like this .我想更改它,而不是运行 cargo run --bin publish_post 1,而是使用 cargo run 并显
我是一名优秀的程序员,十分优秀!