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

时间:2017-01-14 14:28:20

标签: mysql angularjs node.js api architecture

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

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

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

思路:

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

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

  3. 这两个想法都有缺点。

    有人可以提出更好的设计吗?

1 个答案:

答案 0 :(得分:0)

这是我要考虑的方法:

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

对您的用户/客户端使用基于会话/用户的自动增量,该用户/客户端不是数据库中的唯一键。

让Angular为您的活动提供temporary_idevent_number,然后在您的API响应创建的活动后更新temporary_id

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