GAE: objectify удалить по идентификатору - PullRequest
3 голосов
/ 09 ноября 2011

Я пытаюсь удалить запись из хранилища данных GAE с помощью ajax-запроса, который отправляет объект «первичный ключ» (длинный идентификатор с автоматическим приращением).

В настоящее время я делаю это (сложнокодированный ключ = 6):

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

Это работает: удаляет объект, у которого Ключ = 6.Но по соображениям безопасности мне нужен другой параметр (fyi: "parent_user"), поэтому только владелец может удалить этот объект.Кажется, Objectify.delete() не позволяет передавать больше параметров, чем ключ ...

Как я могу решить эту проблему?Поскольку создание Objectify.get() с моими необязательными параметрами + ключом для получения полного объекта, то отправка всего объекта в delete () является нюансом и неоптимизированным ...

Ответы [ 2 ]

3 голосов
/ 09 ноября 2011

Как указано в http://objectify -appengine.googlecode.com / svn / trunk / javadoc / index.html , Objectify.delete () не принимает никаких дополнительных параметров, кроме ключей объекта, идентификаторов или строки.

Итак, вам нужно сначала получить объект на основе ваших фильтров, а затем удалить их. Однако, чтобы оптимизировать это, вы можете получить только ключ объекта, а не полный объект. Затем вы удаляете на основе ключа.

Надеюсь, это поможет!

0 голосов
/ 02 апреля 2012

Если ваша модель данных позволяет вам позволить пользователю быть предком Datastore ваших объектов, вы можете избавиться от запроса, поскольку предок является частью ключа.

Что я часто делаю, так этопроверять подлинность пользователя в начале каждого запроса, который использует аннотацию @Cached Objectify для кэширования всех пользователей (и их привилегий, встроенных в пользователя).

Затем большая часть данных, связанных с пользователем, имеетпользователь как предок.Таким образом, всякий раз, когда пользователь пытается получить доступ к ресурсу или удалить его, я никогда не позволю ему случайно сделать это для любых объектов, которые не принадлежат ей.В целом, только получение, которое является быстрым и кэшируемым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...