我对backbone.js(以及使用javascript的MVC)非常新,并且在阅读有关backbone.js的几个资源以在我的项目中采用它时,我现在有一个问题:如何检测多个用户(浏览器)的时间试图更新? (并防止它?)
我的项目是一个工具,用于编辑想要创建和分发自己的调查的用户的调查/民意调查。到目前为止,我的网络应用程序维护着浏览器触发的编辑命令列表,将其发送到服务器,服务器进行批量更新。
我所做的是,每个调查都维护一个版本号,浏览器必须使用该版本号请求更新,如果请求的版本号与服务器中的版本号不匹配,请求将失败,用户必须重新加载其页面(你知道,实现并发编辑对每个人来说并不容易)。当然,当浏览器的更新成功时,它会从服务器获取新版本号作为ajax响应,并且一个浏览器只有在其过去的更新请求完成时才能请求更新到服务器。
现在,我对RESTful API和MV *模式感兴趣,但很难解决这个问题。对此最好/最常见的方法是什么?
答案 0 :(得分:2)
有一个常见的技巧而不是使用版本,在数据库中使用TIMESTAMPS然后尝试UPDATE WHERE timestamp = model.timestamp。如果它返回零结果计数 - 使用适当的HTTP 409(冲突)响应并要求用户在save()错误回调中更新页面。您甚至可以使用本地存储来合并更改,并且并排比较非等效存储。