如果我理解正确,那么您需要的是,当用户要更新记录时,他应该在发送更新之前查看最新更新的值。fetched_at和updated_at用例应该可以工作。
锁定记录我不认为这是一个好主意。您将不得不经历另一个解锁记录的过程。例如,如果用户获取记录并花费大量时间将其更新回来,或者更糟糕的是,如果用户拉起记录并离开办公桌去执行另一项任务,或者由于某种原因用户的会话被切断 -由于一些错误或互联网问题等而关闭。
您可以尝试另一种方式,不断轮询数据库,并比较在用户提取进行编辑时记录是否发生了更新。如果发生更新,则显示一条标签消息,说明该记录最近已更新。Vuejs + ajax 或 Vuejs + axios 确实提供了创新的方式来进行轮询。
此处的这篇文章展示了一种进行轮询的方法。
new Vue({
el: '#app',
data: {
items: [],
interval: null,
},
methods: {
loadData: function () {
$.get('/api/data', function (response) {
this.items = response.items;
}.bind(this));
}
},
ready: function () {
this.loadData();
this.interval = setInterval(function () {
this.loadData();
}.bind(this), 30000);
},
beforeDestroy: function(){
clearInterval(this.interval);
}
});
<div id="app">
<div v-for="item in items">{{ item.prop }}</div>
</div>
在评论中,他们确实谈到了类似于 nodejs广播的pusher。