我可以根据条件数组在运行时在 Couchbase Lite swift 中创建 Where 子句吗?
Can I create Where clause in Couchbase Lite swift on runtime from array of conditions?
我正在使用 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
让我举一个 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));
因为这个问题是针对 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));
我正在使用 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
让我举一个 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));
因为这个问题是针对 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));