0

私は GWT Web アプリケーションから Datastore.delete(key) メソッドを実行しています。AsyncCallback は onSuccess() メソッドを呼び出していましhttp://localhost:8888/_ah/adminた。同様に、GWT Web アプリケーションをすぐに更新して、削除しようとしている項目がまだ 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;
}

すみません、私は英語が苦手です:-)

4

2 に答える 2

0

ドキュメントによると

保存されたモデルインスタンスに対応するKeyオブジェクト(1つのモデルインスタンスが指定されている場合)またはKeyオブジェクトのリスト(インスタンスのリストが指定されている場合)を返します。

動作する削除関数の例が必要な場合は、これが役立つ場合があります。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('/')        
于 2012-05-18T12:36:03.680 に答える
0

エンティティの存在をどのように確認しますか? クエリ経由?

HRD のクエリは最終的に一貫性があります。つまり、エンティティを追加/削除/変更すると、すぐにクエリを実行しても変更が表示されない可能性があります。これは、エンティティを書き込む (または削除する) ときに、GAEが複数のフェーズでインデックスとエンティティを非同期に更新するためです。これには時間がかかるため、変更がすぐに反映されない場合があります。

リンクされた記事では、この制限を軽減する方法について説明しています。

于 2012-05-18T23:09:20.030 に答える