2014-07-14 41 views
1

我有一個afterSave方法,它將用戶的authData從Facebook註冊並檢索他的朋友。這一直工作正常,直到我稍後在用戶上定義了beforeSave方法,authData不再存在於afterSave方法中。下面的實施例的代碼:beforeSave on User的存在導致authData在用戶afterSave中丟失

Parse.Cloud.beforeSave(Parse.User, function (request, response){ 
    response.success(); 
}); 

即使該方法不會做任何事情,它可以防止從的authData存在於afterSave從同一鏈:

Parse.Cloud.afterSave(Parse.User, function(request) { 
Parse.Cloud.useMasterKey(); 

var user = request.object; 
user.fetch(); 

if (!user.existed()) { 
    Parse.Cloud.httpRequest({ 
     url:'https://graph.facebook.com/me/friends?access_token='+user.get('authData').facebook.access_token, 
     success:function(httpResponse){ 
      // process user friends 
     }, 
     error:function(httpResponse){ 
      console.error(httpResponse); 
     } 
    }); 

    } 
}); 

我已經使用

Parse.Cloud.useMasterKey(); 

and

user.fetch(); 

仍然有在日誌中出現以下錯誤

Result: TypeError: Cannot read property 'facebook' of undefined 
+0

請將此作爲官方錯誤報告打開developers.facebook.com – Fosco

回答

1

請小心,因爲fetch()是一個異步調用,因此應該被鏈接:

user.fetch().then(function (user) { 
    // now have access to updated user 
}); 

在你的代碼中的抓取會對代碼沒有任何影響之後,因爲你沒有等待它完成。

相關問題