我的Angular / Node应用程序显示用户事件的时间轴。用户可以添加,编辑和删除事件。
添加新事件时,AngularJS将事件内容作为JSON添加到时间轴数组中,以便立即显示给用户。同时AngularJS调用一个Node API,将事件插入数据库,在此过程中,DB生成一个event_id(使用自动增量)。
在AngularJS和数据库(mysql)之间保持event_id同步的最佳设计是什么?
思路:
我可以等待API返回event_id并将其插入AngularJS时间轴数组中。这里的问题是,如果用户在返回event_id之前编辑事件,则应用程序将不知道要更新哪个事件。
我可以在添加新事件时在AngularJS端生成一个随机数(temp_id),并在时间轴数组中使用它,并通过API将其发送到数据库。这里的一个问题是跟踪两种类型的ID:temp_id和event_id
这两个想法都有缺点。
有人可以提出更好的设计吗?
答案 0 :(得分:0)
这是我要考虑的方法:
使用随机UUID
来保证客户端之间的唯一性作为主键。
对您的用户/客户端使用基于会话/用户的自动增量,该用户/客户端不是数据库中的唯一键。
让Angular为您的活动提供temporary_id
和event_number
,然后在您的API响应创建的活动后更新temporary_id
。
您可能需要在角度应用中维护事件的状态,直到将其保存到数据库中。并且可能阻止用户编辑/更新该事件,直到它被保存并且服务器响应为止。