在User上存在beforeSave导致authData在afterSave of User中缺失



我有一个afterSave方法,它从注册Facebook的用户获取authData并检索他的朋友。这一直工作得很好,直到我后来在用户上定义了一个beforeSave方法,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();

user.fetch();

仍然在日志

中得到以下错误
Result: TypeError: Cannot read property 'facebook' of undefined

请小心,因为fetch()是异步调用,所以应该链接:

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

在你的代码中,你的取回将不会对它之后的代码产生影响,因为你没有等待它完成。

相关内容

最新更新