我试图通过其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是正确的,但完整的对象(包含作者,发布,描述等的书籍)不会被删除。问题出在哪儿?非常感谢提前。
答案 0 :(得分:0)
我看到你已经解决了这个问题,但我仍然会把这个答案留给可能遇到同样问题的其他人。
为了删除某个对象,它应该有一个objectId
字段(作为类属性或Map中的字段)。在相同的情况下,字段名称应该完全相同。您的具体问题是由第一个字母为大写引起的 - 它应该是小写的。
顺便说一句,如果您将一些日志添加到handleFault()
,您会在BackendlessFault.getMessage()
中看到以下错误:
无法删除对象。具有指定主键的对象 不存在
基本上,这是在没有指定objectId
的对象或请求中根本没有objectId
属性时得到的错误。你的情况将是第二个。