【发布时间】:2014-09-02 22:44:53
【问题描述】:
假设我有这个非常简单的父/子关系(任何Answer 类实例总是有一个Question 父级):
class Answer(ndb.Model):
content = ndb.StringProperty()
timestamp = ndb.DateTimeProperty()
def to_message():
"""Returns a protoRPC message object of the answer"""
class Question(ndb.Model):
content = ndb.StringProperty()
answers = ndb.KeyProperty(repeated = True, kind = 'Answer')
def to_message(self):
"""Returns a protoRPC message object of the question"""
这两个to message 方法只是用来返回一个protoRPC 对象。
问题是:在我的to_message 方法中,在Question 类中,如果我想获取所有子Answer 实例,检索它们,并使用它们自己的to_message 方法将它们变成一个漂亮的rpc 消息,是不是更好:
- 遍历
anwers重复的 KeyProperty 列表 - 对“父”属性使用过滤器进行查询,并遍历它输出的列表
就 NDB 访问而言,第一种方法似乎是最好的,但由于无论如何我们都会超过免费限制,我更想知道数据存储区在获取内容方面是否比我更有效,遍历该列表。
编辑:最初的问题实际上有一个非常简单明了的答案:第一种方式。
真正的问题是,如果我必须根据属性过滤掉一些Answer 实体(例如timestamp):是使用过滤器查询更好,还是遍历列表并使用条件来收集只有“有趣”的实体?
【问题讨论】:
标签: google-app-engine google-cloud-datastore app-engine-ndb