繁体   English   中英

如何在 Android (Java) 的自定义 Couchbase Lite 插件中使用查询限制

[英]How to use query limit in custom Couchbase Lite plugin in Android (Java)

我正在为 Ionic Capacitor 开发一个自定义插件 Couchbase Lite。 我现在正在使用 Android 版本,但无法使查询限制正常工作。 限制参数是可选的,所以我检查它是否是 null。 如果不是 null,我想将 append 限制为现有查询变量。 但我收到“无法解析'查询'中的方法'限制'”的错误。 有没有什么办法可以做到这一点,而无需编写两个查询构建器,一个有限制,另一个没有限制?

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);
        }

您可以将查询转换为 From object,然后再将限制设为 ((From) query).limit(Expression.intValue(limit))。

@Pasin 的回答简单而正确。 但是,如果您想避免强制转换,可以这样做:`

    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();

`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM