1

我的 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?其他建议?

谢谢

4

1 回答 1

3

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

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

..澄清..

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

于 2013-09-07T10:11:17.393 回答