我只是从解析Cloude代码开始,所以我对它并不在行。
我有以下字段的自定义VoteObject:
选票是从1到N的字符串。
我有iOS应用程序,每次投票时,我都会发送投票号码进行解析。
就像第一票是第一票,第二票是第二票,等等。
现在我不习惯做自定义的Cloude代码,它将返回每一次投票的票数。
我来到guide#functions,这就是我到目前为止所拥有的:
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上实现它。
任何帮助都很感激。
发布于 2015-01-18 05:09:48
有两种方法可以做到这一点:
count()查询链接在一起选项1在缩放方面存在一些问题(尤其是在1,000个记录标记,甚至更关键的是在10,000个记录标记上)。
选项2要求你知道最大票数是多少,但我希望这不会是个问题。
以下是第二种方法的示例:
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
});如果我没有犯任何错误的话,那就行了。
https://stackoverflow.com/questions/27928121
复制相似问题