Javascript 如何使用MasterKey增加不是currentUser的PFUser分数?
我正在使用parse.com作为后端开发一个简单的iOS游戏 我想在游戏结束时增加所有玩游戏的pfuser的分数,而不仅仅是currentUser 我使用objective c调用我的云代码,如下所示。(对象是包含游戏中所有用户的数组) 下面给出了云代码本身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.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");
}
});
});