本文介绍了有条件生锈柴油过滤查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试对项目使用柴油,我希望使用";filterable";类型。其想法是您可以转到/api/foo?id=10&bar=11
,它将返回一个结构Foo
:
struct Foo {
id: Option<i64>,
bar: Option<i64>,
name: Option<String>,
}
如:
Foo {
id: Some(10),
bar: Some(11),
name: None,
}
我一直在网上搜索,想找一条通过现有字段去过滤的路,但就是找不到一个可行的解决方案。我最初使用mysql driver并使用proc宏构造SQL查询,但DIESEL使用起来要好得多,我想知道是否有办法获得与使用DIESEL的MySQL驱动程序相同的行为。
推荐答案
可以使用into_boxed
方法,该方法:
use crate::schema::foo;
let mut query = foo::table.into_boxed();
if let Some(id) = foo.id {
query = query.filter(foo::id.eq(id));
}
if let Some(bar) = foo.bar {
query = query.filter(foo::bar.eq(bar));
}
if let Some(name) = foo.name {
query = query.filter(foo::name.eq(name));
}
let results = query
.load::<Foo>(&conn)
.expect("error loading foo");
这篇关于有条件生锈柴油过滤查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!