当其他用户点击我的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 + 1 - ERRORError生成[PUT] / 1 / classes / _User / 1GPcqmn6Hd的响应 “无法修改用户1GPcqmn6Hd。”
{ “硬币”:250 }
答案 0 :(得分:0)
你的成功分支从不调用response.success()
这是一个问题......虽然可能不是问题。
您还在'beforeSave'功能中进行了两次提取,不建议这样做。 '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());
}