我开始考虑使用 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 http://jsonapi.org允许动态选择字段并根据查询参数对它们进行排序。我该如何在 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)