node.js – Google数据存储区中的节点分页

我在使用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,然后运行您删除的同一行,以便在用户要求时获取下一批结果.

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...