Javascript 如何使用MasterKey增加不是currentUser的PFUser分数?

Javascript 如何使用MasterKey增加不是currentUser的PFUser分数?,javascript,ios,parse-platform,parse-cloud-code,Javascript,Ios,Parse Platform,Parse Cloud Code,我正在使用parse.com作为后端开发一个简单的iOS游戏 我想在游戏结束时增加所有玩游戏的pfuser的分数,而不仅仅是currentUser 我使用objective c调用我的云代码,如下所示。(对象是包含游戏中所有用户的数组) 下面给出了云代码本身 Parse.Cloud.define('incrementUserScore', function(request, response) { var userId = request.params.userId, addTo

我正在使用parse.com作为后端开发一个简单的iOS游戏

我想在游戏结束时增加所有玩游戏的pfuser的分数,而不仅仅是currentUser

我使用objective c调用我的云代码,如下所示。(对象是包含游戏中所有用户的数组)

下面给出了云代码本身

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");
 }
 });
});
Parse.Cloud.define(“averageStars”),函数(请求、响应){
var query=newparse.query(“Review”);
query.equalTo(“电影”,request.params.movie);
查询.查找({
成功:功能(结果){
var总和=0;
对于(变量i=0;i
云代码中没有查询的原因是我之前查询了PFUsers以填充对象数组。是否仍有必要在云代码中添加查询?是的,这样您就可以获得要修改的用户对象。如果我将用户对象作为参数传递到云代码函数中会怎么样?我认为这是不明智的。最好只传递用户ID并获取它们。在两种不同的环境中传递用户对象可能会导致无效对象
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");
 }
 });
});