问题标签 [app-engine-ndb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-app-engine - 查询没有父级的实体
我正在努力将应用程序从 db 转换为 ndb,并且正在努力提高我的查询效率。随着数据量的增加,应用程序变得有点慢,导致我们意识到查询效率很低。
背景:
我们的精简数据模型与此类似(请随意批评):
管理员可以“批准” ServiceRequest 的 ServiceRequestApplication。ServiceRequestApplications 使用父 ServiceRequest 实例化。如果 ServiceRequestApplication 被批准,则应用程序的密钥存储在请求的应用程序属性中。
棘手的部分:
1 个实际服务预约(每位技术人员 1 个)可以有多个 ServiceRequest 实体。我们有一个 ServiceRequest,如果需要多种技术,我们会创建额外的 ServiceRequest,以主 ServiceRequest 作为父级。我们最初以这种方式解决问题是因为祖先查询非常容易,包括与查询/表示此数据的方式有关的其他一些原因。
谁能想到一种方法来查询没有子 ServiceRequest 的 ServiceRequest 实体?
谢谢!
google-app-engine - ndb/Google App Engine 上的简单版本/历史
我正在寻找一个系统来跟踪 Google App Engine (Python) 上 ndb.Models/Expandos 内容的版本(历史)。
内容可能比较长,可能有很多版本,但版本之间的差异可能很小。我希望其他人已经做过类似的事情,我想知道他们是如何做到的,以及哪些原则可以指导设计和开发。
在部署时不知道数据模型的属性是什么(例如“标题”、“内容”、“正文”、“日期”等),但类型是已知的(日期、文本、 ETC)。
我最初的想法是安排这样的事情:
算法概述如下:
保存
每次用户保存文档时,将所有最新数据放入一个新数据Version
并指向head
该实例。
到那时,或之后的某个时间,浏览旧版本并将完全保存更改为差异(以节省空间),例如diff-match-patch。我希望每小时、每天或某个设定时间或某个设定数量的差异进行一次完整的保存。
正在加载
加载head
是微不足道的。
旧版本将被标记为完全保存或差异,并且取决于可以直接返回或从差异编译的数据。
想法?
我相信其他人已经解决了这个问题,我很想知道关于它的想法和实现。显然,有完整的版本控制系统,例如 Git、Mercurial 和 Subversion 以及 CVS——但这些系统对于预期目的来说都是多余的,并且无法在 Google App Engine 上运行。
python - 如何以编程方式确定 ndb 属性是否为多值
我正在将一个应用程序从 Datastore 转换为 ndb,并且在 xml 导入例程中遇到了问题。问题是我无法以编程方式确定 ndb.model 类的属性是否为多值属性。
我怀疑这是由于缺乏基本的 Python 技能,因为到目前为止我提出的代码表明该值是“可见的”。因此我无法抓住它。请帮忙。
这导致以下结果:
python - 在 NDB 中跟踪未知类型的反向引用
我正在 GAE 和 Python 2.7 运行时编写我的第一个 RESTful Web 服务;我已经开始使用 Guido 闪亮的新 ndb API。
但是,如果没有原始 db API 的隐式反向引用功能,我不确定如何解决特定情况。如果用户代理请求特定资源并且这些资源被移除 1 度:
主机/api/种类/id?depth=2
鉴于相关实体的类型在开发时未知,从一对多关系中的“一个”中发现相关实体集合的最佳方法是什么?
由于后一个限制,我无法使用先前 SO查询中描述的替换查询。我的模型在运行时是可定义的(因此不是硬编码的)这一事实阻止我使用查询来过滤匹配键的属性。
由于数据存储限制阻止我过滤没有指定种类的属性,祖先和其他无种类查询也被排除在外。
到目前为止,我唯一的想法(除了恢复到 db api)是使用跨组事务在“one”上写入我自己的引用,或者通过更新 ndb.StringProperty(repeat=True) 包含引入新类型的实体时的所有相关类型,或者每次将相关的“许多”实体写入数据存储时,只需在“一个”ndb.KeyProperty(repeat=True) 上维护一个键列表。
我希望比我更有经验的人可以提出更好的方法。
鉴于 jmort253 的建议,我将尝试用一个改编自文档的具体示例来扩充我的问题:
python - 如何使用 ndb 获取数据存储条目客户端的唯一标识符?
现在我正在使用 ndb ,因为它已经退出了实验阶段。我需要重新考虑几件事,而我遇到的一件事是为模型实体客户端获取唯一标识符。我如下抓取实体并将它们发送到客户端
然后客户端我遍历每个条目,然后我设置一个链接以进一步调查模型条目。
我曾经得到一个像asdfer234234===这样的唯一标识符,但现在我从 {{question.key}}得到像Key('Questions',%203)这样的东西。然后我会捕获这个唯一标识符并像使用它一样使用它
如何使用 ndb 复制这种行为?
python - 什么是 Google Appengine Ndb GQL 查询最大限制?
我正在四处寻找答案,我可以从 Google AppEngine 上的 Ndb 上的 GQL 查询中获得的最大结果限制是多少。我正在使用带有游标的实现,但如果我一次检索它们会快得多。
google-app-engine - 有一种方法可以从 jinja2 模板访问 ndb 模型类属性
我正在使用 Appengine 1.6.5,从我得到 None 的 jinja2 模板访问 NDB 模型类属性,而是在循环上访问相同的属性得到了正确的结果。为了解释问题,我发布了一些代码
- - 楷模 - -
--- 处理程序 --- 这只是处理程序的一部分
--- 模板 --- 这是模板的一部分
谁能告诉我获取雇员汽车登记号的正确方法?提前致谢
问候,罗伯托
python - NDB:如何对实体组中的实体使用 get_by_id
我正在使用 get_by_id() 从 NDB 读取实体,但我无法让它适用于属于实体组的实体:
输出:
是设计使然还是错误?我看到以前使用命名空间时出现了一些与 get_by_id() 相关的问题(我使用的是 SDK 1.6.6)。我怎样才能文件夹有来自 id 的父母?
google-app-engine - NDB 这个查询的兼容版本是什么?
也许这是错误的,但我总是在我的应用程序中使用这个查询:
NDB 这个查询的兼容版本是什么?元数据查询非常不同..
编辑: cid 是一个实体,而 cme_only 是一个我确定只有一个值的可迭代对象
然后在模板中:
我不喜欢它,但它已经足够了