【问题标题】:Querying a Diesel table with dynamic parameters使用动态参数查询 Diesel 表
【发布时间】:2017-07-22 07:16:41
【问题描述】:

我开始研究使用 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 中做到这一点?

【问题讨论】:

    标签: rust rust-diesel


    【解决方案1】:

    使用盒装特征:

    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)
    

    【讨论】:

    • 如何解决原始问题的“动态选择字段”部分?动态字段选择是否需要使用返回数据的较低级别视图?
    猜你喜欢
    • 2017-09-02
    • 2018-08-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多