在数据存储区视图中找不到具有objectify的实体

时间:2018-06-14 16:57:45

标签: java eclipse google-app-engine google-cloud-datastore objectify

我在Google Cloud上有一个非常简单的hello world应用程序,带有客观化。

我正在使用最新的Google Cloud Tools(1.6.1)进行eclipse(Oxygen 4.7.3a),Java 8和运行数据存储模拟器(如Elliotte's answer中所述)

我能够保存一些实体,我可以告诉它们是持久的,因为我可以在重启模拟器后检索它们,我知道它们存储在:“C:\ Users \ XXXX \ AppData \ Roaming \ gcloud \ emulators \数据存储\ WEB-INF \ AppEngine上生成的“

但我无法在任何名称空间下的数据存储区视图中找到这些实体。知道我在这里缺少什么吗?

空数据存储区视图: enter image description here

代码:


  public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws IOException {

      Car porsche = new Car("2FAST", 4);
      ofy().save().entity(porsche).now();    // async without the now()

      assert porsche.id != null;    // id was autogenerated

      Car fetched2 = ofy().load().type(Car.class).id(porsche.id).now();

      Query cars = ofy().load().type(Car.class).chunkAll();

    response.setContentType("text/plain");
    response.setCharacterEncoding("UTF-8");

    response.getWriter().print("Hello App Engine!\r\n");

    response.getWriter().print(fetched2.id + " " + fetched2.license);


    response.getWriter().print("\ncars.count():" + cars.count() + "\n");
    List carsList = cars.list();
    for(Car c :carsList) {
        response.getWriter().println(c.id + " " + c.license);
    }


    String namespace = NamespaceManager.get();
    response.getWriter().println();
    response.getWriter().println("namespace: ");

  }

运行模拟器: enter image description here

运行配置:

enter image description here

1 个答案:

答案 0 :(得分:1)

本地管理数据存储页面由本地开发服务器提供,它似乎只在开发服务器本身以独立模式执行数据存储模拟时显示有效信息。即没有连接到数据存储模拟器,如果您未设置连接到模拟器所需的环境,则会发生这种情况。在数据存储模拟器生效之前,这曾经是唯一的操作模式。

在使用数据存储模拟器时,我没有找到访问等效/类似信息的方法,Running the Cloud Datastore Emulator中没有提到这样的功能。只有数据存储模拟器可以可靠地提供此类信息,因为它可以同时为多个开发服务器/应用程序(无视其他人的存在)提供服务。

如果您不需要运行共享同一数据存储的多个开发服务器(与Is it possible to start two dev_appserver.py connecting to the same google cloud datastore emulator?相反),那么在启动开发服务器之前,您可能无法设置Character环境变量。没有将const Character = (props) => { render() { return ( <li> <div className="character"> <span className="character-name">{this.props.char}</span> <span className="character-delete" onClick={props.onDelete(props.char)} > x </span> </div> </li> ) }; } 传递给它 - 然后开发服务器将使用自己的数据存储模拟,您应该在其管理页面中看到这些信息。

请注意,数据存储模拟器可能使用了与开发服务器不同的内部数据格式,如果您返回可能会导致问题,您可能需要清除DATASTORE_EMULATOR_HOST存储目录,恢复以前的格式或使用替代目录。来自Migrating to the Cloud Datastore Emulator

  

目前,本地数据存储模拟器将数据存储在sqlite3中   Cloud Datastore Emulator将数据存储为Java对象。

     

当使用旧版sqlite3数据启动dev_appserver时,数据会   转换为Java对象。原始数据用。备份   filename {original-data-filename} .sqlitestub。