2015-12-02 45 views
1

您可以在beforeSave回调中编辑数据,如果是,如何?在Heroku上运行时在beforeSave上设置一些Parse.User属性

综观各种文档,它看起来像这样的代码应该工作(使用"_User"Parse.User),我可以看到我的日志Ran beforeSave on a Usernew user!但关键aaa仍然是空的..

我试着在user.set之后加user.save()但仍然没有运气。 有什么想法?

Parse.Cloud.beforeSave("_User", function(request, response) { 
    console.log('Ran beforeSave on a User'); 
    var user = request.object; 
    if(user.existed()) { 
    response.success(); 
    } else { 
    console.log('new user!'); 
    user.set('aaa', 'xxx'); 
    response.success(); 
    } 
}); 

编辑2015年12月3日:也许关键信息,该代码在的Heroku运行。 http://blog.parse.com/announcements/introducing-heroku-parse/

编辑2015/12/05:这似乎是Heroku/Parse集成的一个bug。 beforeSave钩被称为,但似乎并没有让你编辑request.object ..

编辑2015年12月7日:我在CloudCode-Express回购所造成的问题https://github.com/ParsePlatform/CloudCode-Express/issues/6

+0

您正在尝试将值设置为本地的用户变量。试试这个:'request.object.set('aaa','xxx');' –

+0

我们在代码中使用了相同的'user.set()'函数,它可以工作,即使使用局部变量。然而,我们在exists()方面遇到了一些问题,而对于我们的用例,我们可以用if(!user.get('aaa')){}'来代替。 – paolobueno

+0

我试过在重构之前直接引用'request.object' ..没有运气...... –

回答

1

使用网络挂接,你需要传递回更改的对象:

response.success(object);

+0

是的,thx! @fosco –

+0

更新文档的时间,https://parse.com/docs/cloudcode/guide#cloud-code-modifying-objects-on-save :) –

0

更改代码使用方法isNew()

Parse.Cloud.beforeSave(Parse.User, function(request, response) { 
    console.log('Ran beforeSave on a User'); 

    if(!request.object.isNew()) { 
    response.success(); 
    } else { 
    console.log('new user!'); 
    request.object.set('aaa', 'xxx'); 
    response.success(); 
    } 
}); 
+0

正如我所说的,日志会显示'new user!',所以该块被执行..不确定它会给我更多...但thx .. –

+0

只是尝试这一点,没有运气..我确实看到'新用户!'日志如前... –

+0

这是整个功能?您在日志中看到什么作为输入和结果? –