从 GAE 数据存储中检索游标
Retrieving Cursors from the GAE Datastore
我对 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
列表为空也返回一个游标,这正常吗?或者这有什么问题?
您总是会得到一个游标,因为数据存储区不知道也不关心是否还有更多结果。您应该做的是检查光标是否确实 returns 某些东西,如果不是,则不要显示 link 以获得更多结果。
拥有这些 "last position" 游标对于新数据的渐进式处理非常有用。
例如,如果您将游标保存在某处,您可以经常轮询数据存储以获取新记录 - 而且它很便宜,因为游标意味着数据存储不会扫描行。
我对 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
列表为空也返回一个游标,这正常吗?或者这有什么问题?
您总是会得到一个游标,因为数据存储区不知道也不关心是否还有更多结果。您应该做的是检查光标是否确实 returns 某些东西,如果不是,则不要显示 link 以获得更多结果。
拥有这些 "last position" 游标对于新数据的渐进式处理非常有用。
例如,如果您将游标保存在某处,您可以经常轮询数据存储以获取新记录 - 而且它很便宜,因为游标意味着数据存储不会扫描行。