自动保存的原则

时间:2013-11-06 12:28:58

标签: autosave design-principles

我有一个用户可以用来提交报告的表单。由于其中一个字段是一个可以放置相当长文本的文本区域,我想插入一个每分钟左右自动保存条目的函数,但我不确定这背后的原理。

我能想到的解决方案是:

  1. 将数据库中的当前条目自动保存为版本(例如,Entry_id = 1,版本= 1,可见性=假)
  2. 1分钟后,再次自动保存为Entry_id = 1,版本= 2, 可见性= FALSE)
  3. 继续重复上述步骤:
  4. 用户按“保存”。在这种情况下,改变的可见性 最后一个版本为TRUE,并删除所有其他版本(entry_id == 1和 可见性== FALSE)
  5. 用户选择不保存(“DISCARD”)。在这种情况下,我删除所有条目 entry_id == 1和visibility == FALSE
  6. 两个考虑因素:

    • 如果客户正在编辑现有条目,上述情况也应该有效。
    • 我不能再使用entry_id作为主键了

    这似乎在我脑海中起作用,但我想知道我是否使用了一个非常复杂的过程,并且有一个更好的过程?

    谢谢, P

1 个答案:

答案 0 :(得分:2)

一旦表单被加载,一个函数将被触发,它将在每10秒(或你提到的任何时间)之后重复。该函数将采用您的形式,序列化并发送到服务器端脚本(很可能是PHP),PHP脚本将在数据库中插入该记录(通过AJAX)并返回此插入记录的主键(id)。现在,当第一次执行函数时,它使用以下参数插入记录:

Entry_id = 1 (or whateverthe primary key at which the record is saved), 
Version = 1, 
Visibility = FALSE

此函数返回主键。所以现在你必须检查自动保存功能的开始,检查主键是否被返回(记录已插入),如果已经返回此键,它将再次让你的表单序列化并发送给另一个服务器端脚本(更新功能)中的函数以及从第一次自动保存调用返回的主键作为参数,并在数据库中根据此键更新记录。

现在用户继续键入内容,自动保存功能每10秒钟继续触发,数据被插入(第一次)并不断更新。用户按下表单上的“保存”按钮后,再次使用该主键并使用以下值更新该记录:

Version = 1, 
Visibility = TRUE