当其他用户点击我的Xamarin按钮时,我正在尝试更新用户。然后,我使用Cloud Code执行此操作,但它不起作用
这是我完整的JS代码:
Parse.Cloud.beforeSave("Archive", function(request, response) {
Parse.serverURL = 'https://pg-app-0brffxkawi8lqvf2eyc2isqrs66zsu.scalabl.cloud/1/';
var status = request.object.get("status");
if (status == "validated") {
var event = request.object.get("event");
event.fetch({
success: function(myEvent) {
var coinsEvent = myEvent.get("coins");
var user = request.object.get("user");
user.fetch({
success: function(myUser, coinsEvent, user) {
var email = myUser.get("email");
var coinsUser = myUser.get("coins");
myUser.set("coins", coinsUser + coinsEvent);
return myUser.save(null, {useMasterKey:true});
}
});
}
});
}
response.success();
});
我认为myUser.save(null, {useMasterKey:true});
应该工作
我实际上有这个错误:
2017年12月24日12:27 GMT + 1 - ERRORError生成[PUT] / 1 / classes / _User / 1GPcqmn6Hd的响应“无法修改用户1GPcqmn6Hd。”
{“硬币”:250}
你的成功分支从不调用response.success()
这是一个问题......虽然可能不是问题。
您还在'beforeSave'功能中进行了2次提取,不建议这样做。 'BeforeSave'必须非常快速地发生并且需要花费时间。我会考虑考虑其他选择。
如果你真的需要这样做,考虑用Parse.Query("event")
做一个include("user")
并用query.first({useMasterKey:true})
触发查询。
你确定coinsEvent
是你认为的吗? Fetch仅返回获取的对象...不确定您是否可以在其他参数中进行curry。我会将你的最终成功例程更改为(仔细检查coinsEvent是否有效):
success: function(myUser) {
var coinsUser = myUser.get("coins");
myUser.set("coins", coinsUser + coinsEvent);
return myUser.save(null, {useMasterKey:true}).then(_ => response.success());
}