簡體   English   中英

從GAE數據存儲中檢索游標

[英]Retrieving Cursors from the GAE 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列表為空,也返回了游標,這是否正常? 或這有什么問題嗎?

您總是會得到一個游標,因為數據存儲區不知道或不在乎是否還有其他結果。 您應該做的是檢查游標是否確實返回了某些內容,如果沒有,則不顯示鏈接以獲取更多結果。

具有這些“最后位置”游標對於逐步處理新數據非常有用。

就像這樣,如果將光標停留在某個位置,則可以每隔一段時間輪詢一次數據存儲區以查找新記錄-這很便宜,因為游標意味着數據存儲區不會掃描行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM