我有一个商店,用户可以在其中使用单个destroy
操作删除多个记录。
现在,其中一些记录被锁定在数据库中(因为其他人正在处理它们(,因此无法删除。服务器如何告诉前端,使用ID A,B,C的记录删除成功,但是用ID X,Y,Z的记录无法删除,应该将其移回商店并显示在网格中?
extjs商店应在sync()
之后知道哪些记录确实被删除了服务器端,哪个是。
我认为对此问题没有直接的解决方案。我选择了以下解决方法:
记录现在具有" ISDEATED"标志,该标志默认设置为false
:
fields:[{
...
},{
name: 'IsDeleted'
type: 'bool',
defaultValue: false
该商店的过滤器隐藏了将标志设置为true
的条目:
filters:[{
property:'IsDeleted',
value:false
}]
当用户选择删除时,我不从商店中进行remove
条目,而是将IsDeleted
标志设置为这些条目上的true
。过滤器使用户认为该条目已删除。
商店同步时,它会执行update
操作,而不是destroy
操作。因此,API的更新端点必须删除IsDeleted
以true
传输的所有条目。如果它无法从数据库中删除条目,则返回给客户端的相应JSON将IsDeleted
设置为false
,因此前端可以知道该条目的删除失败。