google 数据存储中的节点分页
Node pagination in google datastore
我在使用 Google 数据存储进行分页时遇到问题。我有一个没有限制的查询有几百个结果。我想取回 5 个,将它们发回给用户,如果用户想要更多,他们会取回下一个 5 个。
按照我创建查询的文档:
var query = datastore.createQuery('ResultsKind').filter('name', 'bobby').limit(5).autoPaginate(false);
然后我 运行 这个查询得到前 5 个结果:
datastore.runQuery(query, callback);
这是回调函数:
function callback(err, entities, nextQuery, apiResponse) {
if (err) {
// An error occurred while running the query.
console.log('err ' + err);
return;
}
if (nextQuery) {
console.log('res = ' + entities);
datastore.runQuery(nextQuery, callback);
} else {
// No more results exist.
console.log('no more results');
return;
}
};
问题是 res =
被打印了无数次而在控制台中没有结果。我不确定我做错了什么。我希望发生的是。
1) I create the initial query.
2) I run the query.
3) I get the first 5 results.
4) I pass these results + the nextquery object to the user.
5) If the user wants more results the pass me back the nextQuery and I run this query and get the next 5 results and so on.
我一直在看这个文档:http://googlecloudplatform.github.io/gcloud-node/#/docs/v0.30.2/datastore/query?method=autoPaginate。
如何完成这个简单的分页?
在回调中,您将在 console.log
:
之后直接重新运行查询
if (nextQuery) {
console.log('res = ' + entities);
datastore.runQuery(nextQuery, callback); // <-- Here
}
这基本上与 autoPaginate(true)
所做的相同。相反,您应该删除该行,缓存 nextQuery
,然后 运行 您删除的同一行,以便在用户要求时获取下一批结果。
我在使用 Google 数据存储进行分页时遇到问题。我有一个没有限制的查询有几百个结果。我想取回 5 个,将它们发回给用户,如果用户想要更多,他们会取回下一个 5 个。
按照我创建查询的文档:
var query = datastore.createQuery('ResultsKind').filter('name', 'bobby').limit(5).autoPaginate(false);
然后我 运行 这个查询得到前 5 个结果:
datastore.runQuery(query, callback);
这是回调函数:
function callback(err, entities, nextQuery, apiResponse) {
if (err) {
// An error occurred while running the query.
console.log('err ' + err);
return;
}
if (nextQuery) {
console.log('res = ' + entities);
datastore.runQuery(nextQuery, callback);
} else {
// No more results exist.
console.log('no more results');
return;
}
};
问题是 res =
被打印了无数次而在控制台中没有结果。我不确定我做错了什么。我希望发生的是。
1) I create the initial query.
2) I run the query.
3) I get the first 5 results.
4) I pass these results + the nextquery object to the user.
5) If the user wants more results the pass me back the nextQuery and I run this query and get the next 5 results and so on.
我一直在看这个文档:http://googlecloudplatform.github.io/gcloud-node/#/docs/v0.30.2/datastore/query?method=autoPaginate。
如何完成这个简单的分页?
在回调中,您将在 console.log
:
if (nextQuery) {
console.log('res = ' + entities);
datastore.runQuery(nextQuery, callback); // <-- Here
}
这基本上与 autoPaginate(true)
所做的相同。相反,您应该删除该行,缓存 nextQuery
,然后 运行 您删除的同一行,以便在用户要求时获取下一批结果。