【发布时间】:2017-05-29 19:07:24
【问题描述】:
我的 Angular/Node 应用程序显示用户事件的时间线。用户可以添加、编辑和删除事件。
添加新事件时,AngularJS 会将事件内容以 JSON 格式添加到时间线数组中,以便立即显示给用户。同时 AngularJS 调用一个 Node API 将事件插入数据库,在这个过程中数据库生成一个 event_id(使用自动增量)。
在 AngularJS 和数据库 (mysql) 之间保持 event_id 同步的最佳设计是什么?
想法:
我可以等待 API 返回 event_id 并将其插入 AngularJS 时间线数组。这里的问题是如果用户在 event_id 返回之前编辑事件,应用程序将不知道要更新哪个事件。
当添加新事件时,我可以在 AngularJS 端生成一个随机数 (temp_id),并在时间线数组中使用它,并通过 API 将其发送到数据库。这里的一个问题是跟踪两种类型的 ID:temp_id 和 event_id
这两种想法都有缺点。
有人可以提出更好的设计吗?
【问题讨论】:
-
添加一个透明的屏幕覆盖以限制所有用户事件,直到从您的 Node API 收到响应为止?这可以与想法 1 一起实施。
-
这两种方法都有一个很大的缺点 - 数据不一致。由于某些问题,事件可能根本没有保存在服务器中,或者用户可以尝试更改/删除未保存在服务器中的事件。因此,您需要使用 Dhruv Saxena 建议的方法,或者使用 1 和某种 UI 锁定事件,直到它在服务器中创建。
标签: mysql angularjs node.js api architecture