javascript - Cloud Code Parse Limit 1000 通过 Chaining 克服了吗?

标签 javascript parse-platform

我在下面使用以下函数来确定用户在记分牌中的排名。

Parse.Cloud.define("getUserGlobalRank", function(request, response) 
{
    var usernameString = request.params.username;
    var scoreAmount = request.params.score;

    var globalRankQuery = new Parse.Query("scoreDB");
        globalRankQuery.greaterThanOrEqualTo("score",scoreAmount);  
        globalRankQuery.descending("score");
        globalRankQuery.limit("1000");
        globalRankQuery.count(
        {
        success: function(count);
        {
            response.success(count);                
        },

…………

但是,如果满足该条件的条目超过 1000 个,则不会给出准确的响应。我想将一组 .find 方法链接在一起,随后我可以对其执行 .count。有谁知道我如何实现这一目标?如果您能提供一个代码示例,那就太好了!

非常感谢, 詹姆斯

最佳答案

以下答案将适用于 Cloud Code,因为它通过在对 getUserGlobalRank() 的连续调用中使用函数参数来跟踪计数。我在类似的案例中成功地使用了这种架构。

正如 Gene Z. Ragan 在他的评论中提到的,当前接受的答案在 Cloud Code 中不起作用,因为没有“窗口”对象。

递归被卸载到常规 Javascript 函数的原因是因为 Parse 对 Cloud Code 函数的递归限制非常低(我已经验证对 Cloud Code 函数的 >4 次递归调用将导致错误)。通过在 Javascript 函数中实现递归,您可以绕过 Parse 的递归限制,只要代码在允许的时间(大约 15 秒)内执行,就可以继续进行递归调用。

Parse.Cloud.define('getUserGlobalRank', function(request, response) {
     getUserGlobalRank({'username':request.params.username, 'score':request.params.score}, {
        success: function(count) {
            response.success(count);
        },
        error: function(error) {
            response.error(error);
        }
    }); 
});

function getUserGlobalRank(request, response) {

    var usernameString = request['username'];
    var scoreAmount = request['score'];
    var count = (request['count'])? request['count'] : 0;

    var globalRankQuery = new Parse.Query("scoreDB");
    globalRankQuery.greaterThanOrEqualTo("score", scoreAmount);  
    globalRankQuery.descending("score");
    globalRankQuery.limit(1000);
    globalRankQuery.skip(count);
    globalRankQuery.find({
        success: function(results) {
            if (results.length > 0) {
                count = count + results.length;
                getUserGlobalRank({'count':count, 'username':usernameString, 'score':scoreAmount}, response);
            }
            else { // found count of users with higher ranks
                response.success(count);
            }
        },
        error: function(error) { // query error
            response.error(error);
        }
    });
}

关于javascript - Cloud Code Parse Limit 1000 通过 Chaining 克服了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13896484/

相关文章:

javascript - 如何动态设置div标签的高度?

ios - Swift 1.2,如何从 Parse1.7 正确检索图像?

ios - 解析数据库返回重复结果?

xcode - Swift + 解析注销错误

javascript - 通过 Ajax 在 Laravel 上动态依赖选择框,但通过不同的表获取数据,如何?

javascript - 在 asp.net 的标签中显示 jquery 的结果

javascript - ajax调用后如何获得jquery插件的所有功能?

javascript - 更好的 JavaScript 性能

ios - 方法完成后加载 TableView 数据源

swift - 在 queryForTable() 中解析查询多键 swift