如何使用万事达密钥递增当前用户未达到的 PFUser 分数



我正在开发一个简单的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");
 }
 });
});

最新更新