2009-12-10 3 views
1

Donc je lisais la documentation the following sur la définition de vos propres types de propriétés dans GAE. J'ai remarqué que je pourrais également inclure une méthode .validate() lors de l'extension d'une nouvelle propriété. Cette méthode de validation sera appelée "lorsqu'une affectation est faite à une propriété pour s'assurer qu'elle est compatible avec les attributs qui vous ont été assignés". Assez juste, mais quand est-ce exactement?Quand les validations de propriétés sont-elles exécutées dans Google App Engine (GAE)?

Ma question est: quand cette méthode de validation est-elle appelée? Plus précisément, est-il appelé avant ou après qu'il est mis? Si je crée cette entité dans une transaction, est-ce que validate est appelée dans la transaction ou avant la transaction? Je sais que, de manière optimale, chaque propriété doit être "autonome" ou, tout au plus, elle ne doit traiter que de l'état de l'entité dans laquelle elle réside. Mais que se passerait-il si vous effectuiez une requête dans la méthode de validation ? Cela risque-t-il d'exploser si vous avez effectué une requête au sein d'un groupe d'entités différent de celui de votre groupe d'entités de transactions actuel?

Répondre

2

Avant mise, et pendant la transaction, respectivement (il peut annuler la transaction si la validation échoue bien sûr). "Quand une assignation est faite" à une propriété de votre entité, c'est quand vous écrivez theentity.theproperty = somevalue (ou lorsque vous l'exécutez implicitement). Je crois que les requêtes d'entités non liées lors d'une transaction (en validation ou non) sont non-transactionnelles (et donc très pratique), mais pas interdites - mais sur ce dernier point je ne suis pas sûr.