如何在Parse中使用useMasterKey更新用户

问题描述 投票:0回答:1

Issue Description

当其他用户点击我的Xamarin按钮时,我正在尝试更新用户。然后,我使用Cloud Code执行此操作,但它不起作用

My 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}

Environment Setup

  • 服务器 parse-server版本:v2.3.3 服务器:Sashido
parse-platform parse-server
1个回答
0
投票

你的成功分支从不调用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());
  }
© www.soinside.com 2019 - 2024. All rights reserved.