3

私は、オブジェクト "プライマリキー"(自動インクリメントでロングID)を送信するajaxクエリを介してGAEデータストアからレコードを削除しようとしています。GAE:idでオブジェクト化をオブジェクト化

現在、私はこれをやっている(ハード6 =キーをコード化された):

Objectify ofy = ObjectifyService.begin(); 
ofy.delete(Test1.class , 6); 

これは動作します:それは= 6キーを持つエンティティを削除します。 セキュリティ上の理由から、所有者だけがこのオブジェクトを削除できるように、別のパラメータ(fyi: "parent_user")が必要です。 Objectify.delete()は、キーより多くのパラメータを渡すことができません...

どうすればこの問題を解決できますか?私のオプションのパラメータを持つObjectify.get() +キーを作ることhttp://objectify-appengine.googlecode.com/svn/trunk/javadoc/index.htmlで発表されたよう

答えて

3

...最適化されていないnubish &です)(そして、削除するには、オブジェクト全体を送信して、完全なオブジェクトを取得しているため、Objectify.deleteは()いずれかを取ることはありませんオブジェクトキー、ID、または文字列以外の追加パラメータ

したがって、まずフィルタに基づいてオブジェクトを取得してから削除する必要があります。ただし、これを最適化するには、オブジェクトのキーだけを取得し、オブジェクト全体を取得することはできません。その後、キーに基づいて削除します。

希望すると便利です。

+0

リンクを更新してください –

0

データモデルでは、オブジェクトのデータストアの祖先であることをユーザーに許可することができれば、祖先がキーの一部であるため、クエリを取り除くことができます。

多くの場合、Objectifyの@Cachedアノテーションを使用してすべてのユーザー(およびそのユーザーに埋め込まれている権限)をキャッシュするすべてのリクエストの開始時にユーザーを認証します。

次に、ほとんどのユーザー関連データでは、ユーザーが祖先となります。このようにして、ユーザーがリソースにアクセスしようとしたり、リソースを削除しようとするたびに、私は自分のもの以外のオブジェクトに対してユーザーが誤ってそれを行うことを決して許さないでしょう。オールインワンで、すばやくキャッシング可能なものだけを取得します。

関連する問題