我正在开发一个简单的iOS游戏,使用 parse.com 作为我的后端。
我想在游戏结束时增加所有 PFU 玩家玩游戏的分数,而不仅仅是当前用户。
我使用目标 c 调用我的云代码,如下所示。 (对象是一个包含游戏中所有用户的数组)
for (PFObject *object in objects){
int count = 100;
NSNumber *addToScore = [NSNumber numberWithInt:count];
[PFCloud callFunction:@"incrementUserScore" withParameters:@{
@"userId":object.objectId, @"baseNumber":addToScore }];
}
云代码本身给出如下
Parse.Cloud.define('incrementUserScore', function(request, response) {
var userId = request.params.userId,
addToScore = request.params.baseNumber,
User = Parse.Object.extend('_User'),
user = new User({ objectId: userId });
user.increment("score",addToScore);
Parse.Cloud.useMasterKey();
user.save().then(function(user) {
response.success(user);
}, function(error) {
response.error(error)
});
});
调用云代码时,我的游戏崩溃。
我是一个初学者程序员,根本没有使用过javascript。有人看到任何明显的错误吗?
所以你的云代码是问题所在。您需要为每个用户对象创建一个查询,并从该查询中设置分数并保存。
所有这些信息都在:
https://parse.com/docs/cloud_code_guide#functions
您需要根据要传入的 userId 获取用户对象,然后将该对象的分数更改为适当的值。下面是文档中的示例云函数,它应该可以让您开始执行此任务的查询部分。
Parse.Cloud.define("averageStars", function(request, response) {
var query = new Parse.Query("Review");
query.equalTo("movie", request.params.movie);
query.find({
success: function(results) {
var sum = 0;
for (var i = 0; i < results.length; ++i) {
sum += results[i].get("stars");
}
response.success(sum / results.length);
},
error: function() {
response.error("movie lookup failed");
}
});
});