2016-08-28 1 views
0

Ich versuche, ein Objekt meiner Table Books mit Backendless von seiner ObjectId zu löschen. Reffering zur Backendless Dokumentation habe ich versucht, den folgenden Code in meinem BookDetailActivity:Backendless - Löschen von Datenobjekten nach 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); 
} 

Die ID des ausgewählten Buchs ist richtig, aber das komplette Objekt (Buch mit dem Autor, Wertung, Beschreibung, ...) wird nicht gelöscht werden. Wo ist das Problem? Vielen Dank im Voraus.

+0

Sie haben 'HashMap'-Buch erstellt, aber ohne hinzugefügte Werte, fehlt Ihnen etwas? vielleicht 'book.put (" book_id ", object_id);'? – Yazan

+0

fügen Sie auch einige Protokolle zu 'handleResponse()' und 'handleFault()' – Yazan

+0

Sorry, ich habe eine Zeile beim Kopieren verpasst, aber das Problem ist immer noch das gleiche! – Timitrov

Antwort

0

Ich sehe, Sie haben es bereits gelöst, aber immer noch werde ich diese Antwort für die anderen verlassen, die auf das gleiche Problem stoßen können.

Um ein Objekt zu löschen, sollte es ein objectId Feld haben (entweder als Klasseneigenschaft oder als Feld in einer Map). Der Feldname sollte im selben Fall genau gleich sein. Ihr konkretes Problem wird dadurch verursacht, dass der erste Buchstabe ein Großbuchstabe ist - er sollte in Kleinbuchstaben geschrieben sein.

By the way, wenn Sie einige Protokolle in handleFault() hinzugefügt, würden Sie die folgenden Fehler in BackendlessFault.getMessage() sehen:

Kann nicht das Objekt zu entfernen. Objekt mit dem angegebenen Primärschlüssel nicht

Grundsätzlich existiert, dies ist der Fehler erhalten Sie, wenn entweder kein Objekt mit den angegebenen objectId ist oder gibt es keine objectId Eigenschaft in der Anfrage überhaupt. Ihr Fall wäre der zweite.

Verwandte Themen