gpt4 book ai didi

node.js - 谷歌数据存储中的 Node 分页

转载 作者:搜寻专家 更新时间:2023-10-31 23:16:53 24 4
gpt4 key购买 nike

我在使用 Google Datastore 进行分页时遇到问题。我有一个没有限制的查询有几百个结果。我想检索 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,然后在用户要求时运行您删除的同一行以获取下一批结果。

关于node.js - 谷歌数据存储中的 Node 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36534190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com