2017-02-21 2 views
0

これは数週間前に表示されているものですが、バージョン2.3.3のubuntuマシン上でパーズサーバーを実行しています。いくつかの特定のクラスを照会するだけで、そのクラスのすべてのデータは公開されており、ほとんどすべての時間が正常に機能します。しかし、時折、クラウド関数を呼び出すと、無効なセッションエラー209が返ってきます。ユーザーがログインしているかどうかにかかわらず、非常に奇妙ですが、何が起こったとしても誰も関数を実行できず、同じエラーが発生します。パースサーバーは公用レコードの無効なセッショントークンを返すだけで、関数を呼び出すときにのみ

唯一の方法は、サーバーを再起動することです。また、クラウド機能とiOSアプリケーションからのみ発生します。これは、私たちがphpから関数を呼び出すいくつかの部分を持っているためですが、問題

2017-02-21T01:26:57.676Z - Failed running cloud function partnersv2 for user undefined with: 
Input: {"k":"","searchType":"","category":"comida"} 
Error: {"code":141,"message":{"code":209,"message":"invalid session token"}} 
2017-02-21T01:26:57.669Z - invalid session token 
2017-02-21T01:26:55.738Z - ParseError { code: 209, message: 'invalid session token' } 
2017-02-21T01:26:55.737Z - Error generating response. ParseError { 
code: 141, 
message: ParseError { code: 209, message: 'invalid session token' } } 

私はなぜ、また、私は、このサーバーとユーザーが新しいレガシーセッションの原因に関連しているこの出来事を考えていないされて見当がつかない、我々は数ヶ月前にこれをされていない開発を開始します古いサービスから移植されたアプリ

私たちが大いにやっていることの1つは、ダッシュボードのセッションから自由に削除することです私たちはテストと開発を行っていますが、これが理由であるかどうかはわかりませんが、ユーザーが未定義のときは、セッションを使用しようとすべきではないでしょうか、あるいは実際にログに記録されたユーザーが、 VERBOSEのサーバーは他に何も言わないだけで、paramsとそれが私には奇妙に見えない呼び出しは、多分セッションの作業や何かの正しい方向に私を置くことができる人を探しています。任意のヘルプ

EDIT 1をありがとう: これはエラー

Parse.Cloud.define('partnersv2', function (req, res) { 
    var searchType = req.params.searchType, 
      k = req.params.k, 
      category = req.params.category, 
      query; 

    query = new Parse.Query('Partner'); 
    query.addDescending('is_open'); 
    query.equalTo('enabled', true); 
    query.equalTo('category', category); 
    query.select(['name', 'phone', 'delivery_eta', 'keys', 'price_range', 'is_new', 'cover', 'recommended', 'open_time', 'min_order', 'delivery_rank', 'logo', 'comingsoon', 'category', 'is_open']); 
    if (searchType !== '' && searchType !== undefined && k !== '' && k !== undefined) { 
     if (searchType === 'Tag') { 
      query.equalTo('tags', k); 
     } else { 
      query.equalTo('name', k); 
     } 
    } 
    query.limit(1000); 
    query.find({ 
     success: function (results) { 
      if (results.length > 0) { 
       res.success(results); 
      } else { 
       res.error('404 not found'); 
      } 
     }, 
     error: function (error) { 
      res.error(error); 
     } 
    }); 
}); 

をtrowingされるクラウド機能があり、これはACLのCOLのスクリーンショットです

ACL public

+0

Cloud Code機能を表示できますか?私は、あなたがその関数からどのようにユーザを使用しているかを理解したいと思います。自己ホスティングのParseでは、クラウドコードに「現在のユーザー」という概念がなくなり、ユーザーの獲得方法とセッショントークンが変更されました。これは問題の特定に役立ちます。 – Wissam

+0

こんにちは、返信いただきありがとうございます、ユーザーを使用していない、クラスデータは公開されているので、私は関数を呼び出す/ oaのユーザーが、時にはユーザーがこの呼び出しにユーザーを使用していない、実際のコードで私の質問を編集させてください – goseta

+0

あなたはこれを理解しましたか?私は今同じ問題を抱えています.... – simonberry

答えて

1

使用マスターキー

Parse.Cloud.define('partnersv2', function (req, res) { 
//var token = req.user.getSessionToken() // getSession Token return r: (yourkey); 
var searchType = req.params.searchType, 
     k = req.params.k, 
     category = req.params.category, 
     query; 

query = new Parse.Query('Partner'); 
query.addDescending('is_open'); 
query.equalTo('enabled', true); 
query.equalTo('category', category); 
query.select(['name', 'phone', 'delivery_eta', 'keys', 'price_range', 'is_new', 'cover', 'recommended', 'open_time', 'min_order', 'delivery_rank', 'logo', 'comingsoon', 'category', 'is_open']); 
if (searchType !== '' && searchType !== undefined && k !== '' && k !== undefined) { 
    if (searchType === 'Tag') { 
     query.equalTo('tags', k); 
    } else { 
     query.equalTo('name', k); 
    } 
} 
query.limit(1000); 
query.find({ 
    useMasterKey: true, // sessionToken: token 
    success: function (results) { 
     if (results.length > 0) { 
      res.success(results); 
     } else { 
      res.error('404 not found'); 
     } 
    }, 
    error: function (error) { 
     res.error(error); 
    } 
}); 

});

+0

返信ありがとうございますが動作していません、私は実際にそれを試しましたが、最初の場所で行う必要はありません。すべてのデータこれが原因で何が起こっているのかわからない、私は他の製品用のサーバーを持っていて、何ヶ月も問題なく走っています – goseta

関連する問題