如何在android(java)自定义couchbase lite插件中使用查询限制

brqmpdu1  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(261)

我正在为离子电容器开发一个定制插件couchbase lite。我现在正在开发android版本,我无法让查询限制生效。limit参数是可选的,所以我检查它是否为null。如果不为null,我想将限制附加到现有的查询变量。但我得到的错误是“无法解析'query'中的'limit'方法”。有没有办法不用编写两个查询生成器,一个有限制,另一个没有限制?

try {
            String dbName = call.getString("dbName");
            Integer limit = call.getInt("limit");

            Query query = QueryBuilder
                .select(
                    SelectResult.expression(Meta.id),
                    SelectResult.property("title")
                )
                .from(DataSource.database(databases.get(dbName)))

            if (limit != null){
                query.limit(Expression.intValue(limit));
            }

            ResultSet resultSet = query.execute();

            JSONArray array = new JSONArray();
            for (Result result : resultSet) {
                array.put(new JSONObject(result.toMap()));
            }

            JSObject ret = new JSObject();
            ret.put("result", true);
            ret.put("rows", array);
            call.success(ret);
        } catch (final Exception e) {
            call.reject("Error documents ", e);
        }
3df52oht

3df52oht1#

在将限制作为((from)query.limit(expression.intvalue(limit))执行之前,可以将查询强制转换为from对象。

eeq64g8w

eeq64g8w2#

@帕辛的回答简单而正确。但是,如果您不想使用铸造,可以这样做:`

From query = QueryBuilder
        .select(
            SelectResult.expression(Meta.id),
            SelectResult.property("title")
        )
        .from(DataSource.database(databases.get(dbName)));

    if (limit != null){
        query.limit(Expression.intValue(limit));
    }

    ResultSet resultSet = query.execute();

`

相关问题