Как я могу проверить действительность ReferenceProperty в Appengine? - PullRequest
2 голосов
/ 03 октября 2011

Я сейчас тестирую небольшое приложение, которое написал.Я не был достаточно осторожен в обеспечении согласованности данных в моем хранилище данных, и теперь у меня есть проблема, связанная с тем, что у меня есть некоторые записи, ссылающиеся на объекты, которых больше не существует.Более конкретно, у меня есть несколько объектов, у которых есть ReferenceProperty, которым были присвоены значения;упомянутые объекты были удалены, но ссылка остается.

Я хотел бы добавить несколько проверок в мой код, чтобы гарантировать, что ссылочные объекты существуют и действуют соответствующим образом.(Конечно, мне также нужно очистить мои данные).

Один из подходов - просто попытаться получить () это;однако, это, вероятно, должно извлечь весь объект - мне нужен подход, который просто проверяет существование объекта, в идеале, просто приводит к затратам на манипуляции с ключами в хранилище данных, а не к полному чтению объекта.Итак, мой вопрос заключается в следующем: существует ли простой механизм для проверки правильности заданного ReferenceProperty, который включает только операции доступа к ключу (а не операции получения полной сущности)?

1 Ответ

3 голосов
/ 03 октября 2011

Это будет проверять существование ключа без возврата сущности:

db.Query(keys_only=True).filter('__key__ =', test_key).count(1) == 1

Я не уверен, что это вычислительно дешевле, чем выборка сущности.

...