在谷歌应用引擎上更新ndb时多次调用put()方法

时间:2013-09-10 17:26:14

标签: google-app-engine python-2.7 webapp2 app-engine-ndb

我在GAE上有一个Web应用程序,它使用一个ndb数据库,其中每个实体都有属性用户信息和两个字符串,Entity类就像下面那个

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

主页检查是否已有与该用户对应的实体,如果是,则显示字符串dogNamecatName的值。

然后有一个表单,用户可以在其中更新dogNamecatName的值。这会对另一个页面执行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('/')

但是当我被重定向到主页面时,dogNamecatName的值在我刷新页面之前不会更新。我发现通过调用put()方法两次而不是一次,在同一位置,这不再发生,但我不清楚为什么。

我做错了什么,或者ndb是如何工作的?

1 个答案:

答案 0 :(得分:1)

正如Guido怀疑和bossylobster / Fred Saur在这里回答我的旧问题 - Should I expect stale results after redirect on local environment? - 很可能是最终的一致性问题。