迁移解析

时间:2016-12-28 01:51:07

标签: parse-platform migrating

从Parse迁移时,不再存在限制每个Cloud Code请求的“当前用户”的概念。在说明中写道,如果你的代码使用Parse.User.current(),你应该使用request.user(参见下面的说明,从https://github.com/ParsePlatform/parse-server/wiki/Compatibility-with-Hosted-Parse粘贴的复制品)

对于android我当前正在使用ParseUser.getCurrentUser()来检查用户是否登录if(!ParseAnonymousUtils.isLinked(ParseUser.getCurrentUser()))。 我如何重写这个以便在从Parse迁移后才能工作?我是初学者,所以我非常感谢能得到的所有帮助。

有关PARSE地点的资料: 没有当前用户

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

考虑一个消息传递应用程序,其中每个Message对象都设置了一个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()。如果用request.user替换Parse.User.current(),该函数将成功运行,但您可能仍然发现它根本没有返回任何消息。这是因为query.find()不再在request.user范围内运行,因此它只返回公开可读的对象。

要在Cloud Code中作为特定用户进行查询和写入,您需要将用户的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);
    });
});

BR 苏珊娜

0 个答案:

没有答案