在AngularJS和数据库之间保持唯一标识符同步的最佳方法是什么?

我的Angular / Node应用程序显示用户事件的时间轴。 用户可以添加,编辑和删除事件。

当添加新事件时,AngularJS将事件内容作为JSON添加到时间轴数组中,以立即显示给用户。 同时,AngularJS调用一个将事件插入数据库的Node API,在这个过程中,DB生成一个event_id(使用自动增量)。

在AngularJS和数据库(mysql)之间保持event_id同步的最佳devise是什么?

思路:

  1. 我可以等待API返回event_id并将其插入到AngularJS时间轴数组中。 这里的问题是,如果用户在event_id返回之前编辑事件,则应用程序不知道要更新哪个事件。

  2. 在添加新事件时,我可以在AngularJS端生成一个随机数(temp_id),并在时间轴数组中使用它,并通过API将其发送到数据库。 这里的一个问题是跟踪两种types的ID:temp_id和event_id

这两个想法都有缺点。

有人可以提出一个更好的devise?

这是一个我会考虑的方法:

使用保证客户端唯一性的随机UUID作为主键。

使用基于会话/用户的自动递增到数据库中不是唯一键的用户/客户端。

让Angular给你的事件一个temporary_id和一个event_number ,然后在你的API响应创build的事件后更新temporary_id

您可能需要在angular度应用程序中维护事件的状态,直到将其保存到数据库。 也许可以防止用户编辑/更新该事件,直到它被保存并且服务器响应。