Où et comment dois-je effectuer une validation et des transformations sur des entités dans Google App Engine?

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

Question

Dans Ruby on Rails, chaque entité de modèle a un "validate_on_ quelque chose ". méthode hook, qui sera appelée avant que l’entité ne soit réellement conservée dans la base de données. Je souhaite des fonctionnalités similaires dans Google App Engine. Je suis conscient que vous pouvez valider des propriétés individuelles en leur transmettant des arguments dans leurs déclarations. Cependant, si je souhaite faire plus de validation que cela, y a-t-il un endroit dans la déclaration de classe de modèle dans lequel je peux le faire?

De même, dans le même ordre d'idées, il est parfois nécessaire de modifier une entité avant de la conserver dans la base de données. Je pourrais avoir besoin de modifier (transformer) l'entité juste avant qu'elle ne soit réellement écrite dans la base de données. Y at-il un endroit dans la déclaration de classe d’entités qui me permettrait de le faire?

Je suis conscient que je peux placer ces transformations / validations en dehors de la classe. Bu cela ne ressemble guère à une bonne conception OO. Il semble vraiment qu'il devrait y avoir des méthodes de hook qui seraient automatiquement appelées dans un modèle pour ce type de besoins.

Ma question est donc la suivante: quel est le moyen le plus approprié de gérer la validation et la transformation des entités avant leur persistance?

Était-ce utile?

La solution

La meilleure réponse dépend du type de transformation que vous devez effectuer. Il n'y a pas de méthodes généralisées de pré / post-vente pour les modèles, mais il existe plusieurs autres options:

  • Comme vous l'avez mentionné, vous pouvez transmettre des fonctions de validation aux constructeurs de la classe Property
  • Vous pouvez utiliser une classe de propriétés personnalisée qui génère des valeurs par programme, telle que celui-ci .
  • Vous pouvez modifier les entités à mesure qu'elles sont stockées au niveau le plus bas à l'aide de hooks d’appel api .

Autres conseils

Utilisez-vous un type de framework Web en plus des api de moteur d'application brutes? Rails est un cadre de très haut niveau. Avez-vous examiné Django ou l'un des autres frameworks Web? Vous trouverez peut-être que ces éléments sont plus proches des rails que des entités brutes de moteur d'application.

Sinon, si vous voulez quelque chose de plus bas , consultez cet article sur hooks

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top