rust - 为什么查询列必须与锈柴油中的数据库相同
问题描述
我正在学习使用diesel( diesel = { version = "1.4.4", features = ["postgres"] }
)从PostgreSQL 13数据库中查询一些记录,这是我的查询代码:
#[get("/v1/playlist/detail/<req_playlist_id>")]
pub fn playlist_detail(req_playlist_id: i64) -> content::Json<String> {
use crate::schema::playlist::dsl::*;
let connection = config::establish_connection();
let results = playlist.filter(id.eq(req_playlist_id))
.limit(1)
.load::<QueryPlaylist>(&connection)
.expect("Error loading posts");
let response_json = serde_json::to_string(&results).unwrap();
return content::Json(response_json);
}
现在我发现QueryPlaylist
列必须与数据库相同的问题,我无法删除列,因为编译会失败。让我困惑的是为什么列必须与数据库相同?我应该每次都查询每一列数据吗?如果我只想查询一列数据,我该怎么办?如果我想查询我想要的列,可以吗?这是我的查询模型:
#[derive(Insertable,Serialize,Queryable)]
#[table_name="playlist"]
pub struct QueryPlaylist {
pub id: i64,
pub creator: i64,
pub name: String,
pub cover_url: String,
pub description: Option<String>,
pub subscribed: Option<i32>,
pub subscribed_count: Option<i64>,
pub comment_count: Option<i64>,
pub share_count: Option<i32>,
pub play_count: Option<i32>
//pub source: i32
}
这是我的柴油模式:
table! {
playlist (id) {
id -> Int8,
creator -> Int8,
name -> Varchar,
cover_url -> Varchar,
description -> Nullable<Varchar>,
subscribed -> Nullable<Int4>,
subscribed_count -> Nullable<Int8>,
comment_count -> Nullable<Int8>,
share_count -> Nullable<Int4>,
play_count -> Nullable<Int4>,
source -> Int4,
}
}
解决方案
推荐阅读
- c# - 从 LINQ 加载 DataGridView
- python-3.x - 如何通过浏览器循环更改列表中的地址?(Python 3/硒)
- javascript - 如何在将电子邮件设为主要电子邮件之前对其进行验证(Firebase 身份验证)
- numpy - 对 numpy.einsum 进行延迟评估,以避免将中间大维数组存储在内存中
- asp.net-mvc - 将模型数据传递给 Url.Action 方法
- php - PHP 和 Pods:仅将数组值组合到新数组中
- java - 有没有一种简单的方法可以在 Android 上展平 json:api 响应?
- bash - sed/awk 命令在保留空格的同时替换模式
- amazon-web-services - 如何使用 Javascript SDK 在 AWS SNS 订阅上设置消息过滤
- reactjs - 显示来自 Firebase Cloud Firestore + Cloud Storage 的图像?