首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在分析中计算Cloude Code中票数的函数

在分析中计算Cloude Code中票数的函数
EN

Stack Overflow用户
提问于 2015-01-13 17:37:42
回答 1查看 155关注 0票数 0

我只是从解析Cloude代码开始,所以我对它并不在行。

我有以下字段的自定义VoteObject:

  • 投票为字符串

选票是从1到N的字符串。

我有iOS应用程序,每次投票时,我都会发送投票号码进行解析。

就像第一票是第一票,第二票是第二票,等等。

现在我不习惯做自定义的Cloude代码,它将返回每一次投票的票数。

我来到guide#functions,这就是我到目前为止所拥有的:

代码语言:javascript
复制
Parse.Cloud.define("stat", function(request, response) {
  var query = new Parse.Query("VoteObject");
  query.find({
    success: function(results) {
      var sum = 0;
      // make dictionary in JavaScript

      for (var i = 0; i < results.length; ++i) {
        sum += results[i].get("vote");

        // if vote key does not exist in dictionary, put it to 1
        // if exist, +1
      }

      // return dictionary 
      response.success(sum / results.length);
    },
    error: function() {
      response.error("NO STAT");
    }
  });
});

我知道要实现什么算法(我已经将其写为注释),但不知道如何在Parse上实现它。

任何帮助都很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-18 05:09:48

有两种方法可以做到这一点:

  1. 循环遍历每个记录增加的计数器。
  2. 将一些count()查询链接在一起

选项1在缩放方面存在一些问题(尤其是在1,000个记录标记,甚至更关键的是在10,000个记录标记上)。

选项2要求你知道最大票数是多少,但我希望这不会是个问题。

以下是第二种方法的示例:

代码语言:javascript
复制
var queries = [];
var totals = {};
// change this as needed
var maxVote = 3;

for (var vote = 1; vote <= maxVote; vote++) {
  totals[vote.toString()] = 0;
  var query = new Parse.Query("VoteObject");
  var query.equalTo('vote', vote.toString());

  // push into parallel promises array
  queries.push(query.count().then(function(count) {
    var localVote = vote.toString();
    totals[localVote] = count;
  });
}

// wait for them all to finish, order isn't important
Parse.Promise.when(queries).then(function() {
  // all totals calculated, do something with totals object
});

如果我没有犯任何错误的话,那就行了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27928121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档