2015-12-02 80 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

這是整個功能?您在日誌中看到什麼作爲輸入和結果? –