Spring Data Couchbase findAll(Iterable)

时间:2016-01-08 20:47:29

标签: java spring spring-boot spring-data couchbase

我正在使用Spring Data findAll(Iterable)方法从couchbase中检索信息。但是我看到无响应。

我定义了下面列出的存储库:

from bs4 import BeautifulSoup
import requests
import webbrowser


A = [
    'https://www.google.com',
    'https://www.stackoverflow.com',
    'https://www.xkcd.com',
]

print("Which URL would you like to open?"
    " (Please select an option between 1-{})".format(len(A)))
for index, link in enumerate(A):
    print index+1, link

_input = input()

try:
    option_index = int(_input) - 1
except ValueError:
    print "{} is not a valid choice.".format(_input)
    raise
try:
    selection = A[option_index]
except IndexError:
    print "{} is not a valid choice.".format(_input)
    raise

webbrowser.open(selection)
response = requests.get(selection)
html_string = response.content
# Do parsing...

我通过传递有效的json

来获取数据
public interface CustomerRepository extends CrudRepository<Customer, String> {

}

视图定义如下:

Iterable<Customer> custIter=customerRepository.findAll(customerList);

编辑:

如果我在findAll调用之前的循环中进行findOne调用,则findAll调用将返回数据。

2 个答案:

答案 0 :(得分:2)

有点晚了,但是因为@ FuzzyAmi的评论我才有问题。不要发出(null, null),因为findAll(Iterable<ID>)方法依赖于KEYS而不依赖于ID来查找文档。我有一个发出(null, null)的视图,而findAll(Iterable<ID>)总是返回一个空列表。我认为这应该记录在spring-data-couchbase javadoc中。

Emit (meta.id, null)可以使用spring-data-couchbase findAll(Iterable<ID>)

@ simon-baslé:我认为应该更新文档。

答案 1 :(得分:1)

findAll基于视图,我认为这可能是由于查看索引延迟...您是否碰巧在执行此代码之前重新创建数据? IIRC此版本没有使用特定的过期标准,因此它应该默认为UPDATE_AFTER,它将在第一次查询后重新同步索引(对应于您在第一次查找时与第一次查询相对应的内容...)