【问题标题】:Backendless - Deleting Data Objects by IDBackendless - 按 ID 删除数据对象
【发布时间】:2017-01-04 12:11:08
【问题描述】:

我正在尝试通过其 objectId 删除我的带有 Backendless 的 Table Books 的对象。参考 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 是正确的,但不会删除完整的对象(带有作者、发布日期、描述...的图书)。问题出在哪里?非常感谢。

【问题讨论】:

  • 您创建了HashMap 图书,但没有添加任何值,您是否遗漏了什么?也许添加book.put("book_id",object_id );
  • 还添加了一些日志到handleResponse()handleFault()
  • 对不起,我复制时漏了一行,但问题还是一样!
  • 我修复了它,这是一个打字错误...我使用“ObjectId”而不是“objectId”。

标签: android android-intent hashmap backendless


【解决方案1】:

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

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

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

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

基本上,当请求中没有具有指定objectId 的对象或根本没有objectId 属性时,您会遇到这种错误。您的情况将是第二个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    相关资源
    最近更新 更多