与数据库同步数据视图
问题描述:
我使用带有Dataview的Slickgrid编辑多达5000行的表,使用Laravel从MySQL数据库获取数据。我已经创建了一个AJAX保存功能,所有的数据保存到数据库,但它运行得非常慢,并冻结了几秒钟电网:与数据库同步数据视图
function TestSave() {
var request;
var token = $('meta[name="csrf-token"]').attr('content');
request = $.ajax({
url: "/est/public/estimate/{{ $id }}",
type: "PATCH",
dataType: "json",
params: {_token:token},
async: true,
data: { data: JSON.stringify(dataView.getItems()), _token:token
}
});
}
是否有保存数据,没有它冻结的一种方式?我想过使用grid.onClick或onBeforeEditCell,并在更改时单独保存每行,但插入行等函数会在插入下面的每一行更改“订单”值。
保持Dataview和数据库同步的最佳方法是什么?
答
这是一个复杂的问题。
首先,ajax调用应该是异步的,所以它不应该阻塞5秒。
但是,如果您将所有5000行传递给服务器,那么JSON编码可能需要一段时间。您最好只将更改的行传递给服务器。 然而,它本身看起来更复杂。
您可能最好使用现有的框架来为您处理数据。 Breeze是一个不错的选择。