2

我把 appengine 全部设置好了,它在我的本地主机上工作,我打电话

Entity greeting3 = new Entity(KeyFactory.createKey("World", "world3"));
greeting3.setProperty("raw", "2.2 # # # .");
datastore.put(greeting3);

添加我的实体,我可以在控制台中看到它们添加。然后我用

Query q = new Query("World");
PreparedQuery pq = datastore.prepare(q);
for (Entity result : pq.asIterable()) {
    resp.getWriter().println(result);
}

检索实体。它在本地主机上完美运行,但在服务器上我无法接收所有添加实体的列表。尽管使用第一个代码,它们确实被添加了。我也用

e = datastore.get(KeyFactory.createKey("World", req.getParameter(k)));
resp.getWriter().println(e.getProperty("raw"));

在 localhost 上它也可以正常工作,但在互联网上,它会抛出“未找到实体异常”。我试过手动添加数据存储索引,但没有帮助。我整天都在工作,现在真的让我很不高兴:(我也很确定昨天它工作了......请帮忙谢谢

4

2 回答 2

0

如果您在将实体放入数据存储区后很快运行查询,则此问题可能是因为应用引擎数据存储区不是“立即一致的”。它是“最终一致的”

您可以通过在运行查询之前等待几秒钟(也许 10?)来测试它。

如果这是错误,那么您应该查看文档中的应用引擎数据存储概述

于 2013-03-29T23:22:23.790 回答
0

我也遇到过这种情况,如果不是req.getParameter(k)您所期望的,那么您只需要再次运行查询。数据存储不是很快,这就是为什么有 Memcache。

如果您希望您的应用程序立即提供数据,则必须使用 Memcache API 将其“缓存”。

于 2013-04-09T08:08:25.287 回答