Wygląda na to, że nie ma odpowiednika _ah / admin Python App Engine dla implementacji Google App Engine w Javie.
Czy istnieje ręczny sposób przeglądania magazynu danych? Gdzie na moim komputerze znajdują się pliki? (Używam wtyczki App Engine z Eclipse na OS X).
java
google-app-engine
google-cloud-datastore
Jim Blackler
źródło
źródło
Obecnie nie ma przeglądarki datastore dla Java SDK - powinna pojawić się w następnej wersji SDK. W międzyczasie najlepiej jest napisać własny interfejs administratora z kodem do przeglądania datastore - lub poczekać na następną wersję SDK.Java App Engine ma teraz lokalną przeglądarkę datastore, dostępną pod adresem
http://localhost:8080/_ah/admin
.źródło
Mam lokalny magazyn danych w swoim środowisku Windows + Eclipse na \ war \ WEB-INF \ appengine-generated \ local_db.bin
O ile zrozumiałem, używa wewnętrznego formatu o nazwie „bufory protokołów”. Nie mam zewnętrznych narzędzi do prezentacji pliku w formacie czytelnym dla człowieka.
Używam prostego kodu przeglądarki, takiego jak ten:
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)); } } }
źródło
W najnowszych wersjach SDK ( 1.7.6+ ) część administracyjna serwera deweloperskiego wraz z nią zmieniła swoją lokalizację
Analizując logi wyjściowe serwera widzimy, że jest on dostępny pod adresem:
http://localhost:8000
A przeglądarka Datastore :
http://localhost:8000/datastore
Wygląda całkiem schludnie - zgodnie z nowymi wytycznymi Google dotyczącymi projektowania.
źródło
Ponieważ przeglądarka Google App Engines Datastore nie obsługuje wyświetlania kolekcji obiektów, do których istnieją odniesienia, zmodyfikowałem wersję Paula, aby wyświetlała wszystkie jednostki podrzędne:
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> 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)); } } } }
Należy zauważyć, że nic nie jest wyświetlane dla pustych kolekcji / obiektów, do których istnieją odniesienia.
źródło
Otwórz
\war\WEB-INF\appengine-generated\local_db.bin
plik za pomocą edytora tekstu, takiego jak Notepad ++.Dane są zaszyfrowane, ale przynajmniej możesz je odczytać i skopiować, aby je wyodrębnić.
źródło
Dla mnie poprawką było zalogowanie się za pomocą poniższego
gcloud
poleceniagcloud auth application-default login
źródło