我得到了所有设置的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);
}
检索实体。它在localhost上工作得很好,但在服务器上我只是无法接收所有添加实体的列表。使用第一个代码确实可以添加它们。我也用
e = datastore.get(KeyFactory.createKey("World", req.getParameter(k)));
resp.getWriter().println(e.getProperty("raw"));
并且在localhost上它也可以工作,但是在互联网上,它会抛出“没有实体发现异常”。我已经尝试手动添加数据存储索引,但它没有帮助。 我一整天都在工作,现在真让我心烦意乱:(我也很确定它昨天有效... 请帮忙 感谢
答案 0 :(得分:0)
如果在将实体放入数据存储区后很快运行查询,则可能是因为应用引擎数据存储区不是“immediately consistent”。这是“eventually consistent”
您可以在运行查询之前等待几秒钟(可能是10?)进行测试。
如果这是错误,那么您应该查看docs
中的应用引擎数据存储区概述答案 1 :(得分:0)
我也经历过这一点,如果不是req.getParameter(k)
不是你预期的其他东西,那么你只需要再次运行查询。数据存储并不是很快,这就是Memcache的原因。
如果您希望应用程序立即提供数据,则必须使用Memcache API“缓存”它。