1

我有這樣的要求,從而使用戶上傳從手機中的照片,並與照片一起鍵入註釋併發照片和筆記上傳

然而,大大提高反應速度,我想開始上傳照片之前,用戶已經打完的說明(同一技術的Instagram使用)

所以,有3個場景: - 照片上載完成,則說明是 - 的說明是,那麼照片完成上傳 - 筆記和照片上傳完成的同時

我使用的是獨特的令牌,以及現在after_create鉤檢查和保存。

  • 唯一的UUID與照片上傳,並說明

  • 店的照片臨時存儲與UNIQUEID

    • 當照片被保存(after_create)都走來,檢查是否有uniqueid的任何註釋。如果是這樣,請將照片附加到筆記上。
  • 店與UNIQUEID

    • 時注意保存(after_create)的說明,檢查是否有與UNIQUEID任何照片。如果是這樣,請注意附加到照片

這似乎是一個相當普遍的問題,我想知道是否有解決此接受任何模式/解決方案?我使用mongoid和軌道3.2

+0

我認爲你必須從應用層不同,表示層。另外的Instagram是一個非常壞的榜樣考慮web應用程序,因爲它是天然的,可以很容易做的事情,你不能這樣做(在全部或以極大的努力)。在本地應用程序中,由於用戶無法編輯發送到服務器的參數,因此安全性問題也較少(正如您的示例所顯示的那樣)。 在我的一個應用程序中,我只是鎖定提交按鈕,直到照片上傳結束。這是一個非常簡單的解決方案。 –

回答

0

爲了避免併發問題,並且UI混亂。我會做什麼,你的情況是:

  • 用戶的動產的照片 - >設置局部變量在JS(客戶端) - >服務器開始上傳照片,從照片上傳 (當服務器響應回,未設置當地js var)
  • 用戶寫筆記
  • 用戶提交表單 - >你檢查js變量是否設置,如果是,表示照片還沒有上傳,所以你顯示一條消息。否則,你只需提交表單和註釋。

如果你簡化你的流程就像這樣,你不應該有太多的edgecases必須調試和修復。

在這裏唯一的潛在風險,是一個「僵局」的情況下,可以說,由於某種原因,服務器永遠不會返回給客戶端的響應,從未取消設置JS變種。爲了避免這些情況,您可能會在客戶端發生很大的超時,如果服務器在該超時內沒有響應,則顯示錯誤消息。