【问题标题】:How to retrieve data from the Google Datastore?如何从 Google 数据存储中检索数据?
【发布时间】:2014-08-06 13:15:49
【问题描述】:

我使用 java servlet。我写了一个没有错误的代码,但它总是返回一个空列表。 我想从 servlet 更新 Datastore。我只想阅读实体。我会附上我的代码,告诉我问题出在哪里。

我总是得到数据存储是空的。这只是一个测试代码。即使这个剂量似乎也有效。在网上搜索了一周。一切都是徒劳的。

public class TestServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
    resp.setContentType("text/plain");
    resp.getWriter().println("Hello, world");

    DatastoreService datastoreService = DatastoreServiceFactory.getDatastoreService();
    resp.getWriter().println(datastoreService.getIndexes());


    if (datastoreService.getIndexes().isEmpty())
        resp.getWriter().println("the data store is empty");


    Query query = new Query("IMAGES");
    PreparedQuery pq = datastoreService.prepare(query);


    for (Entity entity :pq.asIterable())

    {
        resp.getWriter().println(entity.getKind() );
        resp.getWriter().println(entity.getAppId() );

        resp.getWriter().println(entity.getKey() );
    }

    if (!pq.asIterable().iterator().hasNext())
        resp.getWriter().println("the data store is empty");



}

【问题讨论】:

  • 这是部署的还是在 devserver 中运行?另外,如果你进入你的谷歌管理工具,你能在你的数据存储查看器中看到实体吗?
  • 是的,它已部署。我将其用于学习目的。我确实使用开发人员控制台在我的数据存储中添加了实体。当查询评估时,它总是返回空。

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


【解决方案1】:

我纠正了我的问题。我忘了添加命名空间。这是关于如何在 GAE 数据存储中设置命名空间的 sn-p。

// Set the namepace temporarily to "abc"
String oldNamespace = NamespaceManager.get();
NamespaceManager.set("abc");
try {
  ... perform operation using current namespace ...
} finally {
  NamespaceManager.set(oldNamespace);
}

【讨论】:

    猜你喜欢
    • 2021-05-02
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 2011-02-01
    相关资源
    最近更新 更多