开发服务器不再更新我的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?其他建议?
谢谢
答案 0 :(得分:3)
您的订单调用将返回新查询..
query = MyKind.query()
query = query.order(-MyKind.timestamp)
..澄清..
query.order(-MyKind.timestamp)不会更改查询,它会返回一个新查询,因此您需要使用该方法返回的查询。因为它是您的代码中的query.order(-MyKind.timestamp)什么都不做。