Google app engine 需要初学者';s对使用父实体关系与ReferenceProperty之间的差异的解释

Google app engine 需要初学者';s对使用父实体关系与ReferenceProperty之间的差异的解释,google-app-engine,google-cloud-datastore,parent-child,Google App Engine,Google Cloud Datastore,Parent Child,关于谷歌应用引擎文档中的这一声明: 仅当事务需要实体组时才使用它们。对于实体之间的其他关系,请使用可在查询中使用的ReferenceProperty属性和键值 有人可以举一个查询的例子,比如说获取同一团队的所有成员。也就是说,每支球队的这组球员永远不会改变,但球队的特征,如制服、胜利、失败和薪水会改变并影响每名球员……在这种情况下,这是否意味着有或没有“交易”参与 您将如何编写查询代码,询问某个团队的所有成员?事务与数据的组织方式无关,它是一个特定的数据库操作。在一个事务中,您可以执行多个读写操

关于谷歌应用引擎文档中的这一声明:

仅当事务需要实体组时才使用它们。对于实体之间的其他关系,请使用可在查询中使用的ReferenceProperty属性和键值

有人可以举一个查询的例子,比如说获取同一团队的所有成员。也就是说,每支球队的这组球员永远不会改变,但球队的特征,如制服、胜利、失败和薪水会改变并影响每名球员……在这种情况下,这是否意味着有或没有“交易”参与


您将如何编写查询代码,询问某个团队的所有成员?

事务与数据的组织方式无关,它是一个特定的数据库操作。在一个事务中,您可以执行多个读写操作,而整个过程要么成功,要么失败。限制是所有受影响的实体必须在同一组中。如果您使用的是事务,那么您就知道您使用的是:查找团队数据并不能使其成为事务

如果您的玩家使用引用属性来指定团队,您可以在GQL中使用
WHERE team=KEY('team',)
作为团队实体的id来查询该属性。或者,您可以执行以下操作:

for player in team.player_set:
    # iterating over the players in the team...

当玩家种类具有团队种类的引用属性时,团队会自动获得这个玩家集合(实际上它是一个查询),您可以对其进行迭代。它被称为“反向引用”

事务与数据的组织方式无关,它是一种特定的数据库操作。在一个事务中,您可以执行多个读写操作,而整个过程要么成功,要么失败。限制是所有受影响的实体必须在同一组中。如果您使用的是事务,那么您就知道您使用的是:查找团队数据并不能使其成为事务

如果您的玩家使用引用属性来指定团队,您可以在GQL中使用
WHERE team=KEY('team',)
作为团队实体的id来查询该属性。或者,您可以执行以下操作:

for player in team.player_set:
    # iterating over the players in the team...

当玩家种类具有团队种类的引用属性时,团队会自动获得这个玩家集合(实际上它是一个查询),您可以对其进行迭代。它被称为“反向引用”

因此,对于我们来说,将某个东西称为“事务”,那么就涉及到某种写操作。如果您希望为某些团队子集的某些属性值进行每日更新(“事务”),并且希望将此更改传递给相应的参与者……。那么对于这种类型的事务,我不明白,将团队实体建模为玩家实体的父实体与仅对那些我们希望链接到其团队成员身份的玩家属性使用ReferenceProperty有什么显著不同?因此,对于我们称之为“事务”的东西,则涉及某种写操作。如果您希望为某些团队子集的某些属性值进行每日更新(“事务”),并且希望将此更改传递给相应的参与者……。那么对于这种类型的事务,我不明白将团队实体建模为玩家实体的父实体与仅对我们希望链接到其团队成员的玩家属性使用ReferenceProperty有什么显著不同?