祖先是否自动“放入”数据存储区?

时间:2011-06-18 16:54:42

标签: google-app-engine google-cloud-datastore

我刚开始使用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是否以某种方式自动存储?

1 个答案:

答案 0 :(得分:5)

该例子还说:

  

在将“Guestbook”实体设置为另一个实体的父实体之前,无需创建它。在此示例中,父级用作占位符以实现事务和一致性。

另外,来自:http://khaidoan.wikidot.com/google-app-engine-datastore-entity-group

  

您可以创建具有祖先路径的实体,而无需先创建父实体。为此,您使用种类和密钥名称为祖先创建密钥,然后将其用作新实体的父级。具有相同根祖先的所有实体属于同一实体组,无论路径的根是否代表实际实体。