public CollectionResponse<Eateries> list(@Nullable @Named("cursor") String cursor, @Nullable @Named("limit") Integer limit) {
limit = limit == null ? DEFAULT_LIST_LIMIT : limit;
Query<Eateries> query = ofy().load().type(Eateries.class).limit(limit);
以上是来自终结点 api 的代码片段,用于获取列表。
我正在尝试将限制设置为 null,以便使用以下方法检索数据存储服务器上的所有条目:
List<Eateries> eateries = myApiService.list().set("limit", null).execute().getItems();
但是,它一直将其限制为DEFAULT_LIST_LIMIT设置的任何值。
- 如何将限制设置为 null,以便一次性获取所有条目?
有人可以向我解释以下行在做什么吗:
limit = limit == null ? DEFAULT_LIST_LIMIT : limit;
这将执行您想要的操作:
public CollectionResponse<Eateries> list(@Nullable @Named("cursor") String cursor, @Nullable @Named("limit") Integer limit) {
Query<Eateries> query = ofy().load().type(Eateries.class);
if (limit != null) {
query.limit(limit);
}
limit = limit == null ? DEFAULT_LIST_LIMIT : limit;
事实证明,如果限制为空,则此行将限制设置为 DEFAULT_LIST_LIMIT 的值。
我尝试将DEFAULT_LIST_LIMIT设置为 0,以便限制为 0,这实际上意味着在以下情况下使用时没有限制:
ofy().load().type(Eateries.class).limit(limit);
但是,它仍然返回一个错误,说有关块大小的内容必须大于 0。
所以我或多或少地创建了自己的 ApiMethod,它完全忽略了完全设置限制。