2016-08-28 6 views
0

objectId를 사용하여 백엔드가없는 표 북의 객체를 삭제하려고합니다. Backendless 설명서를 참고로하는 것에 내 BookDetailActivity에 다음 코드를 시도 :백엔드 - 데이터 객체를 ID로 삭제

//inside onCreate 
deleteButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      deleteBook(); 
     } 
    }); 

//outside onCreate 
public void deleteBook() 
{ 
    HashMap book = new HashMap(); 
    Bundle b = getIntent().getExtras(); 
    String object_id = b.getString("objectId"); 
    book.put("ObjectId", object_id); 
    Backendless.Persistence.of("Books").remove(book, new AsyncCallback<Long>() { 
     @Override 
     public void handleResponse(Long aLong) { 
     } 
     @Override 
     public void handleFault(BackendlessFault backendlessFault) { 
     } 
     }); 
    Toast.makeText(getApplicationContext(), "book deleted", Toast.LENGTH_LONG).show(); 
    Intent i = new Intent(this, BooksListActivity.class); 
    startActivity(i); 
} 

선택한 책의 ID가 정확하지만 완전한 객체 (저자, RELEASEDATE, 설명과 함께 책, ...)하지 않습니다 삭제할 수 있습니다. 문제가 어디에 있습니까? 미리 감사드립니다.

+0

당신은'HashMap' 책을 만들었지 만 값을 추가하지 않았다면 뭔가 빠졌습니까? 어쩌면'book.put ("book_id", object_id)를 추가하고; – Yazan

+0

또한'handleResponse()'와'handleFault()'에 일부 로그를 추가합니다. – Yazan

+0

죄송합니다. 복사하는 동안 한 줄을 놓쳤지만 문제는 여전히 동일합니다! – Timitrov

답변

0

당신은 이미 그것을 풀어 봤지만, 여전히 같은 문제를 겪을 수있는 다른 사람들을 위해이 대답을 남겨 둘 것입니다.

일부 개체를 삭제하려면 objectId 필드 (클래스 속성 또는지도의 필드)가 있어야합니다. 필드 이름은 같은 경우에 동일해야합니다. 구체적인 문제는 첫 번째 문자가 대문자로되어 있기 때문에 발생합니다. 소문자 여야합니다. 당신이 handleFault()로 일부 로그를 추가 한 경우 그런데

는, 당신은 BackendlessFault.getMessage()에서 다음과 같은 오류를 볼 것입니다 :

수 없습니다 개체를 제거 할 수 있습니다. 지정된 기본 키를 가진 개체 중 지정된 objectId 아무 객체가 없거나 모든 요청에는 objectId 재산이없는 경우

는 기본적으로, 이것이 당신이 얻을 오류가 존재하지 않습니다. 당신의 사건은 두 번째 사건 일 것입니다.