2015-10-16 57 views
0

我有一個名爲Roster的表,它在其中一列中存儲用戶指針。我在想設置列前保存方法時,它是new.So到目前爲止,我有這個,但我不知道如何獲得用戶IDParse.com將用戶指針添加到保存前的類中

Parse.Cloud.beforeSave("Roster",function(request,response){ 
    //Update roster with sender Id 
    if (request.object.isNew()){ 
    var userPointer = /*NOT SURE HOW TO GET WHO SENT IT*/ 
    request.object.set("User",userPointer); 
    } 
    response.success(); 
}); 

任何想法?

回答

4
var userPointer = request.user; 

是正確的方法。 Todd的答案適用於客戶端,但不適用於beforeSave觸發器發生的雲代碼。

如果您需要訪問超出其id的任何用戶信息,則必須首先提取用戶,因爲整個對象未在請求中發送。

編輯 - 只是想補充說,之前/ afterSave觸發器有3秒超時。這是足夠的時間來執行一兩個快速查詢,但是如果數據庫中有很多對象,或執行許多保存/讀取/查詢調用,則最終可能會超過您的3秒限制。如果您需要發生大量邏輯,而不是從客戶端保存對象,請調用處理所有這些更改的雲代碼函數,然後保存該對象並返回新保存的對象,以便您可以設置您的客戶端對象返回到最新的對象。

1

正如傑克牛逼指出的那樣,你將需要使用

var user = request.user 

Parse.User.current()在雲代碼環境不支持。

+0

謝謝。我剛發現另一個解決方案,request.user也返回用戶信息 –

+0

這個答案是不正確的。 beforeSave觸發器進入雲代碼,該代碼沒有當前用戶登錄。從請求中獲取用戶是唯一正確的方法。 –