Backendless - 按ID删除数据对象

时间:2016-08-28 09:15:29

标签: android android-intent hashmap backendless

我试图通过其objectId删除带有Backendless的Table Books的Object。对Backendless文档的反应我在BookDetailActivity中尝试了以下代码:

//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是正确的,但完整的对象(包含作者,发布,描述等的书籍)不会被删除。问题出在哪儿?非常感谢提前。

1 个答案:

答案 0 :(得分:0)

我看到你已经解决了这个问题,但我仍然会把这个答案留给可能遇到同样问题的其他人。

为了删除某个对象,它应该有一个objectId字段(作为类属性或Map中的字段)。在相同的情况下,字段名称应该完全相同。您的具体问题是由第一个字母为大写引起的 - 它应该是小写的。

顺便说一句,如果您将一些日志添加到handleFault(),您会在BackendlessFault.getMessage()中看到以下错误:

  

无法删除对象。具有指定主键的对象   不存在

基本上,这是在没有指定objectId的对象或请求中根本没有objectId属性时得到的错误。你的情况将是第二个。