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

  发布于 2023-01-03 14:58

假设我有这个非常简单的父/子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"""

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

迭代anwers重复的KeyProperty列表

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

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

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

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有