2014-10-01 123 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