存储同步:许多删除,一些失败

问题描述:

我有一个商店,用户可以在其中用一个destroy操作删除多个记录。存储同步:许多删除,一些失败

现在,这些记录中的一些被锁定在数据库中(因为别人正在处理它们),因此无法删除。服务器如何告诉前端使用Id a,b,c删除记录是成功的,但Id x,y,z的记录无法删除,应该移回存储并显示在网格中?

ExtJS商店应该知道sync()之后哪些记录真的被删除了服务器端,哪些不是。

+0

是你的商店ajax驱动?每次调用ajax请求来更新自身时都意味着什么? – Tejas

+0

@Alexander在同步,你可以通过使用参数 '''store.sync({ 回调失败回调:函数(记录,操作成功){} , 成功:函数(批次,选项){} , 失败:功能(批次,选项){ } });'''我不确定,但也许有东西。 – pagep

我认为这个问题没有简单的解决方案。我选择了以下解决方法:

的记录现在都被默认设置为false一个“请将isDeleted”标志:

fields:[{ 
    ... 
},{ 
    name: 'IsDeleted' 
    type: 'bool', 
    defaultValue: false 

这家商店有一个过滤器,隐藏在标志设置的条目true

filters:[{ 
    property:'IsDeleted', 
    value:false 
}] 

当用户选择删除,我不remove条目从商店,而不是我的IsDeleted标志设置为true这些条目。该过滤器使用户认为该条目已被删除。

当商店同步时,它执行update操作,而不是destroy操作。因此,API的更新端点必须删除IsDeleted作为true传输的所有条目。如果它无法从数据库中删除条目,则返回给客户端的相应json将IsDeleted设置为false,以便前端知道删除该条目失败。