使用 ComplexKey returns 空键查询 CloudantClient

Query CloudantClient with ComplexKey returns a null key

我正在使用 CloudantClient 2.11。我创建了一个带有复杂键的视图。 我正在尝试使用客户端 API 查询视图。我可以看到每一行结果都有返回的键和值,但是 row.getKey() returns null.

my database view and documents

with reduce and grouping

我的代码如下所示:

ViewResponse<ComplexKey, Integer> response =  database.getViewRequestBuilder("view", "viewName").newRequest(Key.Type.COMPLEX, Integer.class).reduce(true)
                .group(true).build().getResponse();
        List<Row<ComplexKey, Integer>> rows = response.getRows();
        for (Row<ComplexKey, Integer> row : rows) {
        
            ComplexKey key = row.getKey();
            Integer value = row.getValue();
            
        }

问题是 row.getKey() 一直都是空的,尽管我可以看到它有键值。

key value in bedugger

感谢您的帮助

阿西.

Cloudant Java 客户端仅支持数组值复杂键。看起来您正在使用调试器屏幕截图中的对象值键。

这在文档中有说明,诚然不是很明显:

http://static.javadoc.io/com.cloudant/cloudant-client/2.11.0/com/cloudant/client/api/views/Key.ComplexKey.html

在代码本身中,您可以在此处查看其实现方式:

https://github.com/cloudant/java-cloudant/blob/master/cloudant-client/src/main/java/com/cloudant/client/api/views/Key.java#L122

您得到的 null 来自这里:

https://github.com/cloudant/java-cloudant/blob/master/cloudant-client/src/main/java/com/cloudant/client/api/views/Key.java#L250