微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐