0

让我澄清一下问题的标题。

我正在实现一个 Web 应用程序的后端。

这就是我想在一个.html文件中创建的

  • 用户在地图上插入点、线或多边形。
  • 用户使用文本数据填写表单。这些数据与她在地图上插入的几何图形有关。
  • 用户通过 html5 websockets/drag'n'drop 上传照片和视频。这些也与她在地图上插入的几何图形有关。

页面底部只有一个按钮,名为“全部保存”,可一次将所有这些数据保存在数据库中(插入)。

问题?我在数据库中有两个单独的表。一个名为“pins”,将获取几何数据和表单数据。

另一个名为“多媒体”,将获取图像/视频。

现在“多媒体”有一个名为“multipin”的列,其中包含一个“pins”id,所以我可以将 pin 和多媒体联系起来。

所有包含 id 的列都是“SERIAL”(每次插入,id 自动增长 +1)。

我在想,如果我同时进行两次插入,我就无法获得新的“pins”id并将其插入“multimedia”的“multipin”列。我必须等待创建新的“pins”id,然后将其插入“multipin”。

所以,两个插入(?)我想出的解决方案是创建三个html 文件。首先,用户插入几何和表单数据。点击一个名为“单击此处添加多媒体”的按钮。现在这个按钮将数据发送到另一个插入“pins”的文件并获取新的id。重定向到第三个文件并发送新的“引脚”。所以现在用户可以插入照片/视频并且代码知道“pins”id,所以可以把它放在“multipin”中。

这听起来不错?有没有更好的方法或策略?

对于“一次保存”版本,我在想 websockets ......对于“3 个文件版本”?我应该只为多媒体使用“传统”ajax 和 websockets 吗?

我为这个大问题道歉。还有我的英语(不是我的母语)

感谢您的时间

斯莱文

4

1 回答 1

0

一次保存对用户来说是一个更好的策略。

假设您使用的是事务关系数据库,您可以通过以下方式保存所有内容。

  • 插入您的引脚表数据。

  • 犯罪

  • 获取引脚顺序 ID

  • 插入您的多媒体

  • 犯罪

如果多媒体有任何问题,您将回滚多媒体插入并删除pins表数据行以保持数据库一致性。

于 2013-08-10T17:57:23.297 回答