使用ComplexKey查询CloudantClient将返回空键

时间:2017-11-26 19:51:22

标签: cloudant

我正在使用CloudantClient 2.11。我用复杂的密钥创建了一个视图。 我正在尝试使用客户端API查询视图。我可以看到每一行结果都有键和返回的值,但row.getKey()返回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()是所有方式为null虽然我可以看到它具有键值。

key value in bedugger

感谢您的帮助

阿西。

1 个答案:

答案 0 :(得分:2)

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