1

Parse から移行すると、各 Cloud Code リクエストに制約される「現在のユーザー」という概念がなくなります。コードで Parse.User.current() を使用する場合は、代わりに request.user を使用する必要があると説明されています (以下の手順を参照してください。https://github.com/ParsePlatform/parse-server/wiki/からコピーして貼り付けてください)。 Compatibility-with-Hosted-Parse )

Android の場合、現在 ParseUser.getCurrentUser() を使用して、ユーザーがログインしているかどうかを確認しています (!ParseAnonymousUtils.isLinked(ParseUser.getCurrentUser()))。Parse からの移行後に機能するようにするには、これをどのように書き直す必要がありますか? 私は初心者なので、受けられるすべての助けに本当に感謝しています。

解析サイトに関する情報: 現在のユーザーはいません

各 Cloud Code リクエストは、Parse Server の同じインスタンスによって処理されるようになったため、各 Cloud Code リクエストに制約される「現在のユーザー」という概念はなくなりました。コードで Parse.User.current() を使用している場合は、代わりに request.user を使用する必要があります。Cloud 関数が、Cloud Code リクエストを行うユーザーのスコープ内で実行されるクエリやその他の操作に依存している場合は、ユーザーの sessionToken をパラメーターとして問題の操作に渡す必要があります。

すべての Message オブジェクトが、メッセージの作成者と受信者など、限定された一連のユーザーにのみ読み取りアクセスを提供する 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 のスコープ内で実行されなくなったため、パブリックに読み取り可能なオブジェクトのみが返されるためです。

Cloud Code 内で特定のユーザーとしてクエリと書き込みを行うには、ユーザーの sessionToken をオプションとして渡す必要があります。リクエストを行う認証済みユーザーのセッション トークンは、request.user.getSessionToken() で取得できます。

移植された Cloud 関数は次のようになります。

// 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 スザンナ

4

0 に答える 0