App Engine不再更新index.yaml

时间:2013-09-07 08:17:18

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

开发服务器不再更新我的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控制台显示“数据存储区不包含索引。”

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

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

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

谢谢

1 个答案:

答案 0 :(得分:3)

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

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

..澄清..

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