rust - 使用动态参数查询 Diesel 表

标签 rust rust-diesel

我开始研究使用 Diesel 来查询数据库。我有一个看起来像下面结构的表(这只是一个帮助我理解 Diesel 工作原理的玩具项目)。

#[derive(Queryable, Insertable)]
#[table_name="posts"]
struct Post {
    id: String,
    title: String,
    body: String,
    published: bool
}

例如,进行在编译时完全确定的查询很容易

posts.select(id, title).order(title.desc());

我不清楚的是如何根据某些运行时参数构建查询,而不必回退到 SQL。例如JSONAPI允许动态选择字段并根据查询参数对它们进行排序。我如何在 Diesel 中执行此操作?

最佳答案

使用盒装特征:

let mut q = dsl::constants.into_boxed();

if let Some(sid) = msg.0 {
    q = q.filter(dsl::id.eq(sid));
}

let items = q
    .order(dsl::id)
    .load::<Constant>(conn)
    .expect("Can't load Constant");

Ok(items)

关于rust - 使用动态参数查询 Diesel 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42557528/

相关文章:

rust - 如何在 Rust 中清除或删除 io::stdin 缓冲区?

rust - 使用rust 生命周期说明符的问题

rust - Rust-多次调用迭代器方法

rust - 分配数据以传递给 FFI 调用的正确方法是什么?

rust/柴油 : How to query and insert into postgres tables which have uuid

database - rust -我可以使这个dsl​​::find()函数更通用吗?

rust - 在柴油塔中使用新类型

rust - 用println打印一个字符多次

rust - 如何为具有映射到多个柴油列的自定义字段的类型派生 Queryable?

sql - Rust Diesel原始SQL给出错误 “type annotations needed for ` std::result::Result <Vec <T>,柴油::result::Error >`”