NDB数据存储区写入确认

时间:2015-05-07 02:48:20

标签: google-app-engine google-cloud-datastore app-engine-ndb

每当字段更新或添加到数据存储区时,是否激活了任何标记?

我有一个修改字段的编辑处理程序(显然)但是当我返回显示所有项目的页面时,字段显示不变,直到我再次刷新页面。我正在做的只是将(self.redirect)重定向到所有项目都发布的页面。

2 个答案:

答案 0 :(得分:1)

您正在看到“最终一致性”的结果。从实际的角度来看,您可以考虑采用许多策略来解决这个问题(一些技术,一些只是UI替代方案)。以下是一对需要考虑的事项:

  • 使用实体组和祖先查询从查询​​中引出强一致性(如上述评论中Zig提供的链接所示)
  • 不要将它们立即重定向回列表页面 - 而是将它们带到“Fields Updated”消息的详细信息(或编辑)页面。当他们返回列表页面时,它将是一致的。
  • 执行更新时,将现在更新的值的副本存储在唯一键下的memcache中,然后使用包含该键的额外标志重定向到列表页面。然后,列表页面将使用该键(如果提供)来获取memcache条目中刚更新的值并将其合并到生成的查询列表中。

答案 1 :(得分:0)

您可以使用DateTime属性的auto_now选项:

last_updated = ndb.DateTimeProperty(auto_now=True)

这里有更详细的描述:How is the value of 'auto_now_add' determined in ndb's async operation?