Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 理解googlendb实体关系_Google App Engine_App Engine Ndb_Google Cloud Datastore - Fatal编程技术网

Google app engine 理解googlendb实体关系

Google app engine 理解googlendb实体关系,google-app-engine,app-engine-ndb,google-cloud-datastore,Google App Engine,App Engine Ndb,Google Cloud Datastore,我正在处理一个基于ndb和两个实体(a和B)的google应用程序引擎应用程序,其中a与B之间有一对多的关系,并使用如下属性实现 bobjects = ndb.KeyProperty(repeated=True); 我已经创建了一个A对象(比如a1)和三个B对象(b1、b2、b3)。 因此,我将b1、b2和b3键添加到a1.objects向量中。 它工作正常,但我因此从数据存储中删除了b1、b2和b3,它们在a1(!)中仍然可见。为什么?想想文件系统的快捷方式/符号链接 当您创建指向文件的快捷

我正在处理一个基于ndb和两个实体(a和B)的google应用程序引擎应用程序,其中a与B之间有一对多的关系,并使用如下属性实现

bobjects = ndb.KeyProperty(repeated=True);
我已经创建了一个A对象(比如a1)和三个B对象(b1、b2、b3)。 因此,我将b1、b2和b3键添加到a1.objects向量中。
它工作正常,但我因此从数据存储中删除了b1、b2和b3,它们在a1(!)中仍然可见。为什么?

想想文件系统的快捷方式/符号链接

当您创建指向文件的快捷方式/符号链接,然后删除原始文件时,快捷方式/符号链接仍然保留在文件系统中,指向不再存在的内容

如果删除了目标,文件系统将无法跟踪所有创建的快捷方式/符号链接并将其删除,这将非常昂贵。

为什么不这样做

KeyProperty存储密钥。没有什么可以说的,它们必须是实际存在的实体的键,甚至是引用您甚至定义的实体类型的键。它们只是钥匙


GAE不是关系数据库,您不应该将其视为关系数据库。如果需要保留对其他实体的引用,则需要确保在必要时自己更新这些引用。

我理解这一点,但我看不出如何通过网页检索引用的数据,尽管它们不再存在于数据存储中