应用程序重新启动之间不会保留本地数据存储

时间:2011-09-15 12:33:51

标签: google-app-engine google-cloud-datastore

我正在运行来自Google Developer CodeLab的GuestBook示例。

添加条目时,它会显示在问候语列表和local datastore

到目前为止一直很好......

但是,当我重新启动应用程序时,只有某些条目仍然存在,而某些完全消失,两者都来自我的应用程序维护的列表,以及本地数据存储区,如上面的链接所示。

我正在使用Eclipse的google插件来开发和测试我的应用程序。

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:1)

您可能直接或通过启动器将--clear-datastore参数传递给dev_appserver。另一种可能性是删除临时目录(例如重启时),这是dev_appserver本地数据存储的默认位置。

我不知道是什么会导致某些实体消失,而且如果没有看到你的代码就不可能说出来。我也不知道“你的应用程序维护的列表”是什么意思。

答案 1 :(得分:0)

感谢您的回答。

我认为--clear-datastore参数会删除所有值,而不仅仅是某些值。

当我重新启动时, appengine生成的文件夹中的本地数据存储文件仍然存在,而且如果这些文件被删除,我认为所有值都会消失。

代码未经谷歌codelab示例(提供的链接)修改。 我的应用程序维护的列表只是查询返回的列表并打印出来:

<%
    PersistenceManager pm = PMF.get().getPersistenceManager();
    String query = "select from " + Greeting.class.getName();
    List<Greeting> greetings = (List<Greeting>) pm.newQuery(query).execute();
    if (greetings.isEmpty()) {
%>
<p>The guestbook has no messages.</p>
<%
    } else {
        for (Greetingg : greetings) {
            if (g.getAuthor() == null) {
%>
<p>An anonymous person wrote:</p>
<%
            } else {
%>
<p><b><%= g.getAuthor().getNickname() %></b> wrote:</p>
<%
            }
%>
<blockquote><%= g.getContent() %></blockquote>
<%
        }
    }
    pm.close();
%>