与this question非常相似,但答案不合适。
我从数据存储区查询填充表格,然后有一个链接允许用户删除特定的行。单击该链接将转到从数据存储区删除该行的URL,然后重定向回该表。
在重新加载之前,更改的频率通常不会显示在表格中。
简单的解决方案是重定向到另一个页面,该页面使用javascript重定向来添加几秒钟的延迟。其他替代方法是将详细信息发送回页面,如action=delete&key=###
,然后确保从表中遗漏该项目。但这很痛苦。
答案 0 :(得分:2)
答案是祖先查询。 https://cloud.google.com/appengine/docs/python/datastore/queries#Python_Ancestor_queries
使用父级创建实体。当删除其中一个实体时,您可以为表列表视图运行一个祖先查询,该查询在数据更改时具有很强的一致性。
祖先查询示例:
tom = Person(key_name='Tom')
photo_query = Photo.all()
photo_query.ancestor(tom)
答案 1 :(得分:1)
使用数据存储区,除非您可以使用祖先,否则您无法保证何时更新索引,只能保证实体本身(稍后通过键获取)通过执行put而不使用异步。 Best是您的建议的组合,其中客户端考虑其修补ui的操作,加上可能使用memcache记住服务器端的最近操作和补丁查询,然后返回客户端。
答案 2 :(得分:1)
这是一种不同的方法。使用Javascript和AJAX。当用户点击链接时,您会做两件事:
它可以提供良好的用户体验,因为您根本不会重新加载页面。
答案 3 :(得分:0)
您可能需要考虑在表格中始终存在显示过时信息的空间:例如,在2个不同的窗口/标签中同时显示表格,然后在其中一个中执行删除操作,另一个仍将显示删除如果遵循将导致404的链接。
考虑到这一点,我首先关注的是管理期望(用户应该知道页面可能偶尔会显示过时的信息),然后是用户能够同时获得过时的页面(刷新按钮?)。哪个可能使问题没有实际意义。
基于延迟的“解决方案”迟早会在竞争条件情况下失败,我不会为额外的复杂性而烦恼。特别是对于删除完成的文档:这正是用户知道信息已过时(免费)的地方,并且可能倾向于刷新,直到最近的更改变为可见。