如何为Google Endpoint API设置限制为null

时间:2016-11-11 11:00:42

标签: android google-cloud-datastore google-cloud-endpoints

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,以便使用以下内容检索DataStore服务器上的所有条目:

        List<Eateries> eateries = myApiService.list().set("limit", null).execute().getItems();

然而,它继续将它限制为DEFAULT_LIST_LIMIT设置为的值。

  1. 如何将限制设置为null,以便我可以一次性获取所有条目?
  2. 有人可以向我解释下面这行是做什么的:

        limit = limit == null ? DEFAULT_LIST_LIMIT : limit;
    

2 个答案:

答案 0 :(得分:0)

limit = limit == null ? DEFAULT_LIST_LIMIT : limit;

如果limit为null,则该行设置为DEFAULT_LIST_LIMIT的限制。

我尝试将DEFAULT_LIST_LIMIT设置为0,这样限制就会为0,这在使用时实际上意味着没有限制:

ofy().load().type(Eateries.class).limit(limit);

然而,它仍然会返回错误,说明块大小必须大于0。

所以我或多或少创造了我自己的ApiMethod,它完全忽略了完全限制设置。

答案 1 :(得分:0)

这可以做你想要的:

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