Где / как я должен выполнять проверку и преобразования объектов в Google App Engine?

StackOverflow https://stackoverflow.com/questions/1805830

Вопрос

В Ruby on Rails каждый объект модели имеет "validate_on_что - то" метод hook, который будет вызван до того, как объект будет фактически сохранен в базе данных.Я хотел бы иметь аналогичную функциональность в Google App Engine.Я знаю, что вы можете выполнять проверку отдельных свойств, передавая им аргументы в их объявлениях.Однако, если я хочу провести дополнительную проверку, есть ли какое-то место в объявлении класса модели, в пределах которого я могу это сделать?

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

Я знаю, что я могу поместить эти преобразования / проверки вне класса.Но вряд ли это похоже на хороший OO-дизайн.Действительно кажется, что должны быть методы hook, которые автоматически вызывались бы в модели для такого рода нужд.

Итак, мой вопрос заключается в том, каков наиболее подходящий способ обработки проверки и преобразования сущностей до того, как они будут сохранены?

Это было полезно?

Решение

Лучший ответ зависит от того, какие преобразования вам нужно выполнить.Для моделей не существует обобщенных методов до / после ввода, но есть несколько других вариантов:

  • Как вы упоминали, вы можете передавать функции проверки конструкторам классов свойств
  • Вы можете использовать пользовательский класс свойств, который генерирует значения программно, например этот.
  • Вы можете изменять объекты, поскольку они хранятся на самом низком уровне, используя перехватчики вызовов api.

Другие советы

Используете ли вы какой-либо веб-фреймворк поверх API сырого движка приложений? Rails - это фреймворк очень высокого уровня. Вы изучили Django или другие веб-фреймворки? Вы можете обнаружить, что они ближе к рельсам, чем к необработанным объектам.

В качестве альтернативы, если вам нужен более низкий уровень, посмотрите эту статью на хуки

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top