我刚开始使用Google App Engine,我对the first datastore example in the tutorial感到有些困惑。
在此示例中,每次将问候语放入数据存储区时,其父级都将设置为根据留言簿名称构建的密钥:
greeting = Greeting(parent=guestbook_key(guestbook_name))
与
def guestbook_key(guestbook_name=None):
"""Constructs a datastore key for a Guestbook entity with guestbook_name."""
return db.Key.from_path('Guestbook', guestbook_name or 'default_guestbook')
我的错误是guestbook_name
本身从未明确放入数据存储区。那些不在数据存储区中的孩子的问候也是如此?或者guestbook_name
是否以某种方式自动存储?
答案 0 :(得分:5)
该例子还说:
在将“Guestbook”实体设置为另一个实体的父实体之前,无需创建它。在此示例中,父级用作占位符以实现事务和一致性。
另外,来自:http://khaidoan.wikidot.com/google-app-engine-datastore-entity-group
您可以创建具有祖先路径的实体,而无需先创建父实体。为此,您使用种类和密钥名称为祖先创建密钥,然后将其用作新实体的父级。具有相同根祖先的所有实体属于同一实体组,无论路径的根是否代表实际实体。