2016-09-09 4 views
1

ログインしたユーザーに何らかの変更を加えてもらう。これらの変更は、クライアントコードによって呼び出されるクラウド機能で発生します。クラウドコードは正しく実行され、その後、私は更新されたデータを取得するためにユーザーテーブルにクエリを返しますが、古いデータを返し、更新されたフィールドは失われます。最新のCDNのparse-latest.jsを使用してください。クライアント側から照会したときにクラウド機能によって変更されたユーザーが古くなったデータを返す

私は既にセーブコールとuseMasterKeyでユーザーセッショントークンを送信しようとしましたが、動作に変更はありません。

クラウド機能が完了し、最新のデータを取得するために、クライアント側のクエリ、ユーザーテーブルに戻った後は、現在のユーザー

  • にログインするためのフィールドを変更するクラウド関数を呼び出し

    1. を再現する手順。
    2. このデータをチェックすると、失効したデータであり、最新のデータは含まれません。

    ここにサンプルコード これは、約束の中にあるクラウド機能の呼び出しです。クラウドOnce機能

    Parse.Cloud.run("notification_update", params)) 
        .then(function(obj) { 
         dfd.resolve(obj); 
        }, function onError(err) { 
         console.error(err) 
         dfd.reject(err); 
    } 
    

    クラウド機能では、関連するコード

    currentUser.set("team", team); 
    console.log("Session token "); 
    console.log(currentUser.getSessionToken()); 
    promises.push(currentUser.save(null, { sessionToken: currentUser.getSessionToken() })); 
    

    は、私は、この関数を呼び出して返します。解析DBをチェックインし、データが更新されます。私はChromeでマイネットワーク]タブで、サーバーからの応答を確認したときに

    var refresh = function onRefresh(dfd) { 
         console.debug("Refresh user was triggered.."); 
        var currentUser = Parse.User.current(); 
        var q = new Parse.Query(Parse.User); 
        q.include("team"); 
        q.get(currentUser.id) 
         .then(function success(user) { 
         currentUser.set({ 
          team: user.get("team"),   //Here the data is not updated 
         }); 
         if (dfd && dfd.resolve) { 
          dfd.resolve(currentUser); 
         } 
        }, function onError(error) { 
         if (dfd && dfd.reject) { 
          dfd.reject(error); 
         } 
        }); 
    } 
    

    はまた、私は、ユーザーが更新されたすべてのデータを持っていることがわかります。あなただけの代わりに、ユーザーをフェッチするフル約束したクエリを実行しているのユーザー(私)に対してクエリを実行しないのはなぜ

    Here you can the response has returned updated data and the team object is updated

    In this image you see while debugging the response you can see the team is undefined

  • 答えて

    1

    Parse.User.become(sessionToken).then(function(user){ 
        //User Object is available to you here 
    }) 
    
    +0

    面白いことを試してみてください。 –

    +0

    私はすでにこのクエリが発生するクライアント側のユーザーセッションに入っています。なぜParse.User.becomeを使用する必要がありますか? –

    +0

    それは仕事をしませんでした。他のアイデアや考え。 –

    関連する問題