我执行方法Datastore.delete(key)构成我的GWT Web应用程序,AsyncCallback调用onSuccess()方法。我立即刷新http://localhost:8888/_ah/admin
,我想要删除的实体仍然存在。 Smilar to,我立即刷新我的GWT Web应用程序,我打算删除的项目仍显示在网页上。注意onSuccess()已被调用。
那么,我怎么知道实体已经删除了什么?
public void deleteALocation(int removedIndex,String symbol ){
if(Window.confirm("Sure ?")){
System.out.println("XXXXXX " +symbol);
loCalservice.deletoALocation(symbol, callback_delete_location);
}
}
public AsyncCallback<String> callback_delete_location = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
Window.alert(caught.getMessage());
}
public void onSuccess(String result) {
// TODO Auto-generated method stub
int removedIndex = ArryList_Location.indexOf(result);
ArryList_Location.remove(removedIndex);
LocationTable.removeRow(removedIndex + 1);
//Window.alert(result+"!!!");
}
};
服务员:
public String deletoALocation(String name) {
// TODO Auto-generated method stub
Transaction tx = Datastore.beginTransaction();
Key key = Datastore.createKey(Location.class,name);
Datastore.delete(tx,key);
tx.commit();
return name;
}
抱歉,我不擅长英语: - )
答案 0 :(得分:0)
根据docs
返回Key对象(如果给出了一个模型实例)或Key对象列表(如果给出了一个实例列表),它们与存储的模型实例相对应。
如果您需要一个有效的删除功能示例,可能会help。第108行
class DeletePost(BaseHandler):
def get(self, post_id):
iden = int(post_id)
post = db.get(db.Key.from_path('Posts', iden))
db.delete(post)
return webapp2.redirect('/')
答案 1 :(得分:0)
如何检查实体的存在?通过查询?
HRD上的查询为eventually consistent,这意味着如果您添加/删除/更改实体,则会立即查询它,您可能看不到更改。原因是当您编写(或删除)实体时,GAE异步更新索引和实体in several phases。由于这需要一些时间,因此您可能不会立即看到更改。
链接文章讨论了缓解此限制的方法。