【问题标题】:Retrieving Cursors from the GAE Datastore从 GAE 数据存储中检索游标
【发布时间】:2015-01-11 12:24:16
【问题描述】:

我有一个关于 Datastore 如何生成游标的问题,我在下面有这段代码,即使结果列表为空,仍然会返回游标:

    if(asList){
        if(startCursor != null && startCursor.getWebSafeString() != null){
            fetchOptions.startCursor(Cursor.fromWebSafeString(startCursor.getWebSafeString()));
            res = pq.asQueryResultList(fetchOptions);
        } else if(startCursor != null && startCursor.getWebSafeString() == null) {
            res = pq.asQueryResultList(fetchOptions);
        } else {
            res = pq.asList(fetchOptions);
        }
    } else {
        if(startCursor != null && startCursor.getWebSafeString() != null){
            fetchOptions.startCursor(Cursor.fromWebSafeString(startCursor.getWebSafeString()));
            res = pq.asQueryResultIterable(fetchOptions);
        } else if(startCursor != null && startCursor.getWebSafeString() == null){
            res = pq.asQueryResultIterable(fetchOptions);
        } else {
            res = pq.asIterator(fetchOptions);
        }
    }
    return res;

res这里是查询结果:

String newCursor = res.getCursor().toWebSafeString();

即使res列表为空返回游标,是否正常?或者这有什么问题?

【问题讨论】:

    标签: java google-app-engine google-cloud-datastore


    【解决方案1】:

    您总是会得到一个游标,因为数据存储不知道也不关心是否还有更多结果。你应该做的是检查光标是否真的返回了一些东西,如果没有,就不要显示链接以获得更多结果。

    【讨论】:

      【解决方案2】:

      拥有这些“最后位置”光标对于渐进式处理新数据非常有用。

      例如,如果您将游标保留在某处,则可以每隔一段时间轮询 Datastore 以获取新记录 - 这很便宜,因为游标意味着 Datastore 不会扫描行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多