同步照片和笔记上传

时间:2013-09-25 02:17:01

标签: ruby-on-rails mongodb concurrency ruby-on-rails-3.2 mongoid

我有这样的要求,即用户正在从手机上传照片,并在照片中键入一张便条

但是,为了大大提高响应速度,我想在用户输入完笔记之前开始上传照片(Instagram使用的技术相同)

所以,有3种情况: - 照片上传完成,然后提交照片 - 提交说明,然后照片完成上传 - 笔记和照片同时上传

我正在使用一个唯一的令牌,以及after_create挂钩现在检查并保存。

  • 独特的uuid同时附带照片上传和备注

  • 将照片存储在具有uniqueid

    的临时商店中
    • 保存照片时(after_create),检查是否有任何带唯一ID的注释。如果是这样,请附上照片以备注。
  • 使用uniqueid

    存储注释
    • 保存笔记(after_create)时,检查是否有任何带唯一ID的照片。如果是,请附上照片说明

这似乎是一个相当普遍的问题,我想知道是否有任何可接受的模式/解决方案?我正在使用mongoid和rails 3.2

1 个答案:

答案 0 :(得分:0)

避免并发问题和UI混淆。在你的情况下,我会做的是:

  • 用户选择照片 - >在JS(客户端)中设置局部变量 - >服务器开始上传照片 (当服务器从照片上传回复时,取消设置本地js var)
  • 用户写笔记
  • 用户提交表单 - >检查是否设置了js变量,如果是,则表示照片尚未上传,因此您显示一条消息。否则,您只需提交附有说明的表格。

如果您将流程简化为类似的东西,则不应该有太多的边缘需要调试和修复。

这里唯一的潜在风险是“死锁”情况,假设由于某种原因,服务器永远不会向客户端发回响应,从不取消设置js var。为避免这些情况,您可能会在客户端上出现大的超时,如果服务器在该超时内没有响应,则会显示错误消息。