2014-10-01 122 views
0

我有一個使用parse.com作爲後端的隨機消息應用程序。我保存的信息在一個名爲「消息」類的按鍵:使用雲代碼操縱parse.com類

  • 「消息體」(這是該消息的內容)和
  • 「senderId」(這是當然的發件人ID)

將此信息保存到我的Messages類後,我使用雲代碼查詢3個隨機用戶並將此消息發送給他們。

我的問題是哪個是最好的方法來做到這一點,因爲我預見我目前的方法中的錯誤。我使用的當前方法是在用戶按下發送之後,將消息保存到Parse.com,然後我調用「發送給3個隨機用戶」雲功能,但是如果我的消息未成功保存到解析後端雲功能是否實施?

-(IBAction)send{ 

     PFObject *message = [PFObject objectWithClassName:@"Message"]; 
     [message setObject:self.messageContent forKey:@"messageBody"]; 
     [message setObject:[[PFUser currentUser] objectId] forKey:@"senderId"]; 

     [message saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error){ 
     if(error){ 
      //show alert with error 
     } 
     else{ 
      //everything was successful 
     } 
     }]; 



     [PFCloud callFunctionInBackground:@"sendToThreeRandomUsers" withParameters:@{} 
                    block:^(NSString *result, NSError *error) { 
                     if (!error) { 
                      //cloud function was a success! 
                     } 
                    }]; 

    } 

基本上我想知道是否有一種方式,每當有在信息類的新對象,我可以說從我的解析後臺發送這3個隨機用戶,而不是從我的用戶設備調用它?

或者我應該完全跳過將它保存到我的解析後端,並直接發送到我的雲代碼作爲雲功能的參數?然後將其保存到我的後端。如果messageBody非常大雖然呢?

所以這個問題真的不是代碼,而是構造它的方式。

願望你爲什麼不寫你的消息類afterSave方法,我可以用赫克託·拉莫斯作爲標記爲這個問題

回答

2

。每當成功保存新消息時,就執行該方法(Parse.Cloud.afterSave(「Messages」,function(request,response){..}),並且可以選擇3個隨機用戶,API說明如下:

https://parse.com/docs/cloud_code_guide#functions-onsave

希望這有助於 問候。

+0

這完全是要走的路。 – 2014-10-02 12:10:34

+0

謝謝!但如果我用這個,我應該使用雲功能的郵件保存到解析數據瀏覽器(消息作爲參數),還是應該將其保存在背景中,像上面代碼中所示的塊? – ian 2014-10-02 16:18:15

+0

首先,您可以通過雲和您的代碼塊將數據保存到解析數據瀏覽器。 o這意味着您的塊可以在保存操作後將數據保存到Message類中,您的afterSave雲代碼將被觸發。 – kingspeech 2014-10-02 22:31:35