Parse platform 迁移分析时处理ParseUser.getCurrentUser()

Parse platform 迁移分析时处理ParseUser.getCurrentUser(),parse-platform,migrating,Parse Platform,Migrating,从解析迁移时,不再有“当前用户”的概念约束到每个云代码请求。说明中写道,如果代码使用Parse.User.current(),则应使用request.User(请参阅下面的说明,复制粘贴自) 对于android,我当前使用ParseUser.getCurrentUser()检查用户是否在(!ParseAnonymousUtils.IsLink(ParseUser.getCurrentUser())中登录。 我需要如何重写它,以便它在从Parse迁移之后能够工作?我是一个初学者,所以我真的很感谢所

从解析迁移时,不再有“当前用户”的概念约束到每个云代码请求。说明中写道,如果代码使用Parse.User.current(),则应使用request.User(请参阅下面的说明,复制粘贴自)

对于android,我当前使用ParseUser.getCurrentUser()检查用户是否在(!ParseAnonymousUtils.IsLink(ParseUser.getCurrentUser())中登录。 我需要如何重写它,以便它在从Parse迁移之后能够工作?我是一个初学者,所以我真的很感谢所有我能得到的帮助

解析站点上的信息: 没有当前用户

每个云代码请求现在都由相同的Parse Server实例处理,因此不再有“当前用户”的概念约束到每个云代码请求。如果代码使用Parse.User.current(),则应改用request.User。如果云函数依赖于在发出云代码请求的用户范围内执行的查询和其他操作,则需要将用户的sessionToken作为参数传递给相关操作

考虑一个消息传递应用程序,其中每个消息对象都设置了一个ACL,该ACL只为有限的一组用户(如消息作者和收件人)提供读取权限。要获取发送给当前用户的所有消息,您可以使用与此类似的云功能:

// Parse.com Cloud Code

    Parse.Cloud.define('getMessagesForUser', function(request, response) {
      var user = Parse.User.current();

  var query = new Parse.Query('Messages');
  query.equalTo('recipient', user);
  query.find()
    .then(function(messages) {
       response.success(messages);
    });
});
如果将此函数移植到Parse Server而不进行任何修改,您将首先注意到您的函数无法运行,因为无法识别Parse.User.current()。如果将Parse.User.current()替换为request.User,函数将成功运行,但您可能仍然会发现它根本没有返回任何消息。这是因为query.find()不再在request.user的范围内运行,因此它将只返回公共可读对象

要在云代码中以特定用户的身份进行查询和写入,您需要将用户的sessionToken作为选项传递。发出请求的经过身份验证的用户的会话令牌在request.user.getSessionToken()中可用

移植的云函数现在如下所示:

// Parse Server Cloud Code
    Parse.Cloud.define('getMessagesForUser', function(request, response) {
      var user = request.user; // request.user replaces Parse.User.current()
      var token = user.getSessionToken(); // get session token from request.user

  var query = new Parse.Query('Messages');
  query.equalTo('recipient', user);
  query.find({ sessionToken: token }) // pass the session token to find()
    .then(function(messages) {
      response.success(messages);
    });
});

苏珊娜

对不起,不清楚你在问什么。如果有的话,你会犯什么错误?你回答自己的问题了吗?如果是这样,请分别写下回复,并将其标记为repliedSorry,但不清楚你在问什么。如果有的话,你会犯什么错误?你回答自己的问题了吗?如果是这样,请分别写下答复,并将其标记为已答复