Google app engine google app engine computedProperty:何时使用?什么时候不用?

Google app engine google app engine computedProperty:何时使用?什么时候不用?,google-app-engine,google-cloud-datastore,app-engine-ndb,Google App Engine,Google Cloud Datastore,App Engine Ndb,在google app engine中使用ComputedProperty(ndb)比在需要时在后端(例如在处理程序中)进行计算(而不涉及数据存储)有什么明显的优势 我读到的所有内容似乎都表明它基本上是无用的,只会减慢查询速度(如果没有其他内容,至少是put操作) 想法 我确实看到了: 注意:如果应用程序查询计算值,请使用ComputedProperty。如果您只想在Python代码中使用派生版本,请定义一个常规方法或使用Python的@property内置函数 但这并不能真正解释任何优势(如果

在google app engine中使用ComputedProperty(ndb)比在需要时在后端(例如在处理程序中)进行计算(而不涉及数据存储)有什么明显的优势

我读到的所有内容似乎都表明它基本上是无用的,只会减慢查询速度(如果没有其他内容,至少是put操作)

想法

我确实看到了:

注意:如果应用程序查询计算值,请使用ComputedProperty。如果您只想在Python代码中使用派生版本,请定义一个常规方法或使用Python的@property内置函数


但这并不能真正解释任何优势(如果可以推导,为什么要查询?

文档在这方面非常清楚,我将再次引用它作为参考,该部分:

注意:如果应用程序查询计算值,请使用
ComputedProperty
。如果您只想在Python代码中使用派生版本,请定义一个常规方法或使用Python的
@property
内置属性

什么时候使用?当您需要查询某些派生数据时,需要将其写入数据存储以便对其进行索引

我想到的第一个例子是:您已经在存储用户的生日,但还需要按实际年龄进行筛选,添加属性以导出该值可能是最简单、最有效的解决方案:

age = ndb.ComputedProperty(lambda self: calc_age(self.birthday))

当然,您可以只使用一个返回年龄的函数,但这只有在获取实体后才有用,而不能将其用于查询。

关于这方面的文档非常清楚,我将再次引用它作为参考,该部分:

注意:如果应用程序查询计算值,请使用
ComputedProperty
。如果您只想在Python代码中使用派生版本,请定义一个常规方法或使用Python的
@property
内置属性

什么时候使用?当您需要查询某些派生数据时,需要将其写入数据存储以便对其进行索引

我想到的第一个例子是:您已经在存储用户的生日,但还需要按实际年龄进行筛选,添加属性以导出该值可能是最简单、最有效的解决方案:

age = ndb.ComputedProperty(lambda self: calc_age(self.birthday))

当然,您可以只使用一个返回年龄的函数,但这只有在获取实体后才有用,而不能将其用于查询。

关于这方面的文档非常清楚,我将再次引用它作为参考,该部分:

注意:如果应用程序查询计算值,请使用
ComputedProperty
。如果您只想在Python代码中使用派生版本,请定义一个常规方法或使用Python的
@property
内置属性

什么时候使用?当您需要查询某些派生数据时,需要将其写入数据存储以便对其进行索引

我想到的第一个例子是:您已经在存储用户的生日,但还需要按实际年龄进行筛选,添加属性以导出该值可能是最简单、最有效的解决方案:

age = ndb.ComputedProperty(lambda self: calc_age(self.birthday))

当然,您可以只使用一个返回年龄的函数,但这只有在获取实体后才有用,而不能将其用于查询。

关于这方面的文档非常清楚,我将再次引用它作为参考,该部分:

注意:如果应用程序查询计算值,请使用
ComputedProperty
。如果您只想在Python代码中使用派生版本,请定义一个常规方法或使用Python的
@property
内置属性

什么时候使用?当您需要查询某些派生数据时,需要将其写入数据存储以便对其进行索引

我想到的第一个例子是:您已经在存储用户的生日,但还需要按实际年龄进行筛选,添加属性以导出该值可能是最简单、最有效的解决方案:

age = ndb.ComputedProperty(lambda self: calc_age(self.birthday))

当然,你可以只使用一个返回年龄的函数,但这只在你得到实体后才有用,不能用于查询。

“当然,你可以只使用一个返回年龄的函数,但这只在你得到实体后才有用,不能用于查询。”是的,我的观点是:为什么仅仅有一个函数来做这件事效率会更低?在这种情况下,为什么仅仅拥有一个从该实体返回年龄的函数效率会更低?首先,为什么要为ComputedProperty而烦恼呢?这与效率无关,如果你想查询需要写入数据存储的数据,那就是了。但是如果有其他方法获取这些信息,你为什么还要查询它呢?我认为唯一有意义的是,如果你不使用calculatedproperty,它会导致你以后更多的查询,但我不能给出一个例子,如果你有一个“流行”的ComputedProperty,它会根据创建的日期和更新投票创建一个流行分数。然后,您需要根据受欢迎程度对其进行查询和排序。它所说的computedproperty的用法就是它的实际用法。非常有用。“当然,你可以有一个返回年龄的函数,但这只有在你得到实体后才有用,不能用于查询。”是的,我的观点是:为什么只有一个函数来做这件事效率会更低?在这种情况下,为什么仅仅拥有一个从该实体返回年龄的函数效率会更低?首先,为什么要为ComputedProperty而烦恼呢?这与效率无关,如果你想查询需要写入数据存储的数据,那就是了。但是如果有其他方法获取这些信息,你为什么还要查询它呢?我认为唯一有意义的是,如果你不使用calculatedproperty,它会导致你以后更多的查询,但是我不能给出一个例子来说明这种情况,另一个例子是如果