2014-03-04 14 views
1

我正在開發一種在parse.com上工作的消息應用程序。我的用戶和用戶的消息在解析數據庫上。我想從解析中刪除用戶的所有消息之一,但我無法做到。我使用了一些這樣的方法,但它不起作用。解析com在android應用程序上刪除數據庫

ParseObject msgObject; 
public void DeleteAllUserMessage(String sender){ 

      ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Messages"); 
      query.whereEqualTo("personSender",sender); 
      msgObj.createWithoutData("Messages", sender).deleteEventually(new DeleteCallback() { 

       @Override 
       public void done(ParseException e) { 
        // TODO Auto-generated method stub 
        try { 
         msgObj.delete(); 
        } catch (ParseException e1) { 
         // TODO Auto-generated catch block 
         e1.printStackTrace(); 
        } 
       } 
      }); 

回答

1

假設personSender領域正在被很好用的,你可以做以下命令來刪除由用戶發送的所有消息:

String sender = "-> This is the user that sent the messages <-"; 

ParseQuery<ParseObject> query = ParseQuery.getQuery("Messages"); 
query.whereEqualTo("personSender", sender); 
query.findInBackground(new FindCallback<ParseObject>() { 
    public void done(List<ParseObject> messages, ParseException e) { 
     if (e == null) { 
      // remove all messages at once 
      try { 
       ParseObject.delete(messages); 
      }catch(ParseException pe) { pe.printStackTrace(); } 

      // OR (do not use both!) 

      // iterate over all messages and delete them 
      for(ParseObject message : messages) 
      { 
       message.deleteEventually(); 
      } 
     } else { 
      Log.d("Semothing went wrong. Show useful message based on ParseException data", e.getMessage()); 
     } 
    } 
}); 
+0

com.parse.ParseException:object n找到了刪除例外,但在我的Messages類中,有10條消息給「john」用戶 –

+0

print'sender'變量給控制檯並查看它是否正確。還請確保您的用戶已登錄。 – letiagoalves

+0

我解決了問題,有一個用戶權限ACL是錯誤的。我添加了defaultACL.setPublicWriteAccess(true); 它工作正常。感謝bro –

1
reject.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      //for rejecting and deleting the request 
      Log.i("MSG", "On click Reject"); 
      ParseObject.createWithoutData("Request", oId).deleteEventually(); 
      Log.i("MSG", "Successfully deleted the request"); 

     } 
    }); 

哪裏Request是類名和oId是對象ID,並確保已設置條件

ParseACL.setPublicWriteAccess(true);