Вопрос по google-app-engine, java, google-cloud-datastore – Как просмотреть локальное хранилище данных Java App Engine?

84

Кажется, что нет эквивалента _ah / admin Python App Engine для реализации Java в Google App Engine.

Есть ли ручной способ просмотра хранилища данных? Где найти файлы на моем компьютере? (Я использую плагин App Engine с Eclipse на OS X).

Ваш Ответ

7   ответов
0

gcloud команда

gcloud auth application-default login
6

на \ war \ WEB-INF \ appengine-генерируемый \ local_db.bin

Насколько я понял, он использует внутренний формат, называемый «буферы протокола». У меня нет внешних инструментов для представления файла в удобочитаемом формате.

Я использую простую "программу просмотра" код как это:

public void doGet(HttpServletRequest req, HttpServletResponse resp) 
    throws IOException 
{

    resp.setContentType("text/plain");

    final DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
    final Query query = new Query("Table/Entity Name");
    //query.addSort(Entity.KEY_RESERVED_PROPERTY, Query.SortDirection.DESCENDING);

    for (final Entity entity : datastore.prepare(query).asIterable()) {
        resp.getWriter().println(entity.getKey().toString());

        final Map<String, Object> properties = entity.getProperties();
        final String[] propertyNames = properties.keySet().toArray(
            new String[properties.size()]);
        for(final String propertyName : propertyNames) {
            resp.getWriter().println("-> " + propertyName + ": " + entity.getProperty(propertyName));
        }
    }
}
Код хороший, но параметр для конструктора запросов неверен: таблица неверна, она должна быть именем сущности. В примере с гостевой книгой это будет "приветствие" который является строкой. Я пробовал это, но не работает: окончательный запрос Query = новый запрос (& quot; Гостевая книга / Приветствие & quot;); Другая проблема: как вы показываете содержимое различных ключей / имен таблицы с вашим кодом? Как guestbook1, gb2 и т. Д.
1

ет отображение коллекций связанных объектов, я изменил версию Пола для отображения всех дочерних объектов:

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    String entityParam = req.getParameter("e");

    resp.setContentType("text/plain");
    final DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();

    // Original query
    final Query queryOrig = new Query(entityParam);
    queryOrig.addSort(Entity.KEY_RESERVED_PROPERTY, Query.SortDirection.ASCENDING);

    for (final Entity entityOrig : datastore.prepare(queryOrig).asIterable()) {

        // Query for this entity and all its descendant entities and collections
        final Query query = new Query();
        query.setAncestor(entityOrig.getKey());
        query.addSort(Entity.KEY_RESERVED_PROPERTY, Query.SortDirection.ASCENDING);

        for (final Entity entity : datastore.prepare(query).asIterable()) {
            resp.getWriter().println(entity.getKey().toString());

            // Print properties
            final Map<String, Object> prop,erties = entity.getProperties();
            final String[] propertyNames = properties.keySet().toArray(new String[properties.size()]);
            for(final String propertyName : propertyNames) {
                resp.getWriter().println("-> " + propertyName + ": " + entity.getProperty(propertyName));
            }
        }
    }
}

Следует отметить, что ничего не отображается для пустых коллекций / ссылочных объектов.

Этот код ищет все ваши сущности и их дочерние объекты, что, если у дочерних объектов тоже есть дети? эта функция будет работать как рекурсия?
111

http://googleappengine.blogspot.com/2009/07/google-app-engine-for-java-sdk-122.html: & quot; Наконец, у сервера приложений dev есть средство просмотра данных. Запустите ваше приложение локально и укажите в браузереhttp://localhost:8888/_ah/admin http://localhost:8000/datastore* чтобы проверить это. & quot;

* по состоянию на1.7.7

Новый интерфейс администратора по-прежнему не работает с видами / сущностями, созданными Native Datastore API. Поэтому мне все еще нужен мой & quot; просмотрщик & quot; :)
localhost:8888/_ah/admin работал как чемпион для меня (обратите внимание, порт изменился) - но я попробую AppWrench только для сравнения.
Спасибо вам большое! Я действительно нуждался в этом, чтобы отладить проблему постоянства.
1

\war\WEB-INF\appengine-generated\local_db.bin файл с помощью текстового редактора, например Notepad ++.

Данные зашифрованы, но, по крайней мере, вы можете прочитать их и скопировать, чтобы извлечь их.

2

1.7.6+) Административная часть сервера Dev поставляется с ним изменил свое местоположение

Анализируя журналы вывода сервера, мы видим, что он доступен по адресу:

http://localhost:8000

ИDatastore зритель:

http://localhost:8000/datastore

Выглядит довольно аккуратно - в соответствии с новыми рекомендациями Google по дизайну.

40

There's currently no datastore viewer for the Java SDK - one should be coming in the next SDK release. In the meantime, your best bet is to write your own admin interface with datastore viewing code - or wait for the next SDK release.

Java App Engine теперь имеет локальный просмотрщик хранилища данных, доступный по адресуhttp://localhost:8080/_ah/admin.

Вы имеете в виду ссылку на пост в блоге, который был опубликован несколько днейafter Я отправил этот ответ? & APOS; устаревшее & APOS; Я согласен, но излишним и отвергнутым немного жестоко.
Согласен. Хороший ответ в то время; сейчас устарел.
Это избыточно - см. Пост dfrankow выше.
@mcherm это сработало для меня. Другие ответы здесь, с другой стороны, не были.

Похожие вопросы