【问题标题】:App Engine no longer updating index.yamlApp Engine 不再更新 index.yaml
【发布时间】:2013-09-07 08:17:18
【问题描述】:

我的 GAE 应用程序的 index.yaml 文件不再由开发服务器更新。 我最近在我的应用程序中添加了一种新类型和一个像这样查询这种类型的处理程序:

from google.appengine.ext import ndb

class MyKind(ndb.Model):
    thing = ndb.TextProperty()
    timestamp = ndb.DateTimeProperty(auto_now_add=True)

在处理程序中我有一个查询

query = MyKind.query()
query.order(-MyKind.timestamp)
logging.info(query.iter().index_list())
entities = query.fetch(100)
for entity in entities:
    # do something

AFAIK,开发服务器应该为此查询创建一个索引并相应地更新 index.yaml。然而,事实并非如此。它看起来像这样:

indexes:

# AUTOGENERATED

logging.info(query.iter().index_list()) 应该输出用于查询的索引,它只是说“无”。此外,SDK 控制台显示“数据存储区不包含索引”。

运行查询会返回未排序的实体。我有两个问题:

  • 我的代码中是否存在语法错误导致查询结果未排序或缺少索引?

  • 如果是缺少索引,有没有办法手动强制开发服务器更新 index.yaml?其他建议?

谢谢

【问题讨论】:

    标签: google-app-engine app-engine-ndb


    【解决方案1】:

    您的订单调用返回新查询..

    query = MyKind.query()
    query = query.order(-MyKind.timestamp)
    

    ..澄清..

    query.order(-MyKind.timestamp) 不会改变查询,它返回一个新的,所以你需要使用该方法返回的查询。因为它是 query.order(-MyKind.timestamp) 在您的代码中什么都不做。

    【讨论】:

    • 谢谢!我已经澄清了这个问题:我想知道我必须做什么才能对我的查询结果进行排序。
    • 使用 query.order() 返回的查询。因为它是你仍在使用无序查询。有序的查询被抛出到以太。因此,将您的两行更改为我提供的行。
    • 感谢您的澄清。查询现在工作正常,显然不需要索引
    猜你喜欢
    • 2014-03-30
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 2014-11-13
    相关资源
    最近更新 更多