2013-03-29 3 views
2

Я получил AppEngine все готово, и он workds на моем локальном хосте, я называюAppengine не может извлекать объекты из хранилища данных

Entity greeting3 = new Entity(KeyFactory.createKey("World", "world3")); 
greeting3.setProperty("raw", "2.2 # # # ."); 
datastore.put(greeting3); 

добавить свои объекты, и я могу видеть, что они добавили в консоли. Затем я использую

Query q = new Query("World"); 
PreparedQuery pq = datastore.prepare(q); 
for (Entity result : pq.asIterable()) { 
    resp.getWriter().println(result); 
} 

для извлечения сущностей. он отлично работает на localhost, но на сервере я просто не могу получить список всех добавленных объектов. они добавляются, хотя с первым кодом. Я также использую

e = datastore.get(KeyFactory.createKey("World", req.getParameter(k))); 
resp.getWriter().println(e.getProperty("raw")); 

и на локальном хосте это работает хорошо, но в Интернете, он бросает "ни один субъект не найдено исключение. Я попытался вручную добавить индексы хранилища данных, но это не помогло. Я работал весь день, и это действительно расстраивает меня сейчас :(Я также вполне уверен, что работало вчера ... пожалуйста, помогите спасибо

+0

Проверьте, что 'req.getParameter (k)' на самом деле '' world3 "'. –

+0

имеет имя/id world3 на loacalhost, но на google есть имя = world3 "tag". но также не должен datastore.prepare (q); вернуть все мировые организации? – zavr

+0

@zavr помог мой ответ? – xybrek

ответ

0

Если запрос выполняется очень скоро после того, как вы поставите объект в хранилище данных, этот вопрос может быть потому, что хранилище данных App Engine не «immediately consistent». это «eventually consistent»

Вы можете проверить это, подождать несколько секунд (возможно, 10?) перед выполнением запроса.

Если это была ошибка, то вы должны проверить обзор хранилища данных приложения в docs

+1

, к сожалению, это было не так, поскольку было больше 10 часов, но сущности были добавлены, и это все еще не работает. Кроме того, я могу видеть тогда в админ, но не могу получить, используя API хранилища данных. Я попробую создать новый проект и использовать в нем хранилище данных, посмотреть, что произойдет. ура – zavr

0

Я тоже испытал это, если его не то, что req.getParameter(k) - это нечто иное, чем то, что вы ожидали, тогда вам просто нужно снова запустить запрос. Datastore не очень быстро, поэтому есть Memcache.

Если вы хотите, чтобы ваше приложение обслуживало данные немедленно, вы должны «кэшировать» его, используя API Memcache.

Смежные вопросы