我可以在运行时根据条件数组在Couchbase-Liteswift中创建Where子句吗



我正在使用Couchbase Lite 2.6,我想在运行时构建我的查询,我通过API接收条件列表(["Key":"value"](,我需要使用它来过滤我的本地数据库并显示值。

有什么方法可以使用QueryBuilder做到这一点吗

我在Couchbase论坛上发现了类似的讨论,但它已经很旧了,所以解决方案不再有效。

https://forums.couchbase.com/t/filter-on-array-filed-in-couchbase-and-couchbase-lite/3983/4

既然这个问题是给Swift的,那么用Swift来回答就好了:这与@deniswsrosa提到的代码相同,但在siwft中。

let name = "foo";
let surname = "bar";
let ex = Expression.property("type").equalTo(Expression.string("user"));
if(name != nil) {
ex.and(Expression.property("name").equalTo(Expression.string(name)));
}
if(surname != nil) {
ex.and(Expression.property("surname").equalTo(Expression.string(surname)));
}
let query = QueryBuilder
.select(SelectResult.all())
.from(DataSource.database(DatabaseManager.getDatabase()))
.where(ex)
.limit(Expression.int(10));

让我给你一个android的例子,你可以把它外推到swift:

String name = "foo";
String surname = "bar";
Expression ex = Expression.property("type").equalTo(Expression.string("user"));
if(name != null) {
ex.and(Expression.property("name").equalTo(Expression.string(name)));
}
if(surname != null) {
ex.and(Expression.property("surname").equalTo(Expression.string(surname)));
}
Query query = QueryBuilder
.select(SelectResult.all())
.from(DataSource.database(DatabaseManager.getDatabase()))
.where(ex)
.limit(Expression.intValue(10));

最新更新