小编had*_*are的帖子

Google NDB:从实体读取子实体的最佳方式,重复属性与常规查询?

假设我有这个非常简单的父/子relatiosnship (任何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"""
Run Code Online (Sandbox Code Playgroud)

这两种to message方法仅用于返回protoRPC对象.问题是:在我的to_message方法中,在Question类中,如果我想获取所有子Answer实例,检索它们,并使用自己的to_message方法将它们变成一个很好的rpc消息,那么它更好:

  • 迭代anwers重复的KeyProperty列表
  • 使用"父"属性上的过滤器执行查询,并迭代它输出的列表

在NDB访问方面,第一种方法似乎是最好的,但由于我们无论如何都要超过免费限制,我更想知道数据存储区在获取内容方面是否比我更有效,迭代那份清单.

编辑:原始问题实际上是一个非常简单明了的答案:第一种方式.真正的问题是,如果我必须Answer根据它们的属性过滤掉一些实体(例如timestamp):使用过滤器查询是否更好,或者迭代列表并使用条件仅收集"有趣"实体?

google-app-engine app-engine-ndb google-cloud-datastore

5
推荐指数
1
解决办法
1829
查看次数