2013-09-10 4 views
0

У меня есть веб-приложение в GAE, которое использует базу данных ndb, где каждый объект имеет информацию об пользовательских целях и две строки, класс Entity похож на тот, который нижеМножественные вызовы метода put() при обновлении ndb на движке google

class UserPlus(ndb.Model): 
user = ndb.UserProperty() 
dogName = ndb.StringProperty(indexed=False) 
catName = ndb.StringProperty(indexed=False) 

Главная страница проверить, есть ли уже объект, соответствующий этому пользователю, и если да, то отображается значение строк dogName и catName.

Тогда есть форма, в которой пользователи могут обновлять значения dogName и catName. Это выполняет запрос POST на другую страницу, метод ниже обновлять entiy

def post(self): 
    currentUser = users.get_current_user() 
    up = UserPlus.query(UserPlus.user==currentUser).get() 
    up.dogName = self.request.get('dog_name') 
    up.catName = self.request.get('cat_name') 
    weatherUser.put() 
    self.redirect('/') 

Но когда я перенаправлены на главную страницу, значения dogName и catName не обновляются, пока не обновите страницу. Я обнаружил, что, вызывая метод put() два раза вместо одного, в том же положении, это больше не встречается, но я не понимаю, почему.

Я делаю что-то неправильно или так работает ndb?

+0

Как ваша основная страница получает страницу пользователя? Если это запрос, вы, вероятно, сталкиваетесь с «возможной согласованностью». –

+0

Ничего себе, код некорректно отформатирован (не запускается), я его отредактировал, и мое редактирование было отклонено: D. – 0xc0de

ответ

1

Как подозревают Гвидо и боссироборн/Фред Саур ответил на мой старый вопрос здесь - Should I expect stale results after redirect on local environment? - скорее всего, в конечном итоге проблема согласованности.

+0

Спасибо, Кевин и Гвидо. На самом деле это была возможная проблема согласованности, как было предложено в вопросе, который вы связали, используя запрос ** предка ** исправил проблему – cagnarrogna

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