js排序后的状态如何在后端保存

排序后的状态如何在后端保存

这里只是介绍下常规的存储解决方案.很多前端都支持排序,如可拖动的,如排序的表格等.前端有很多组件如Jquery插件等,这里不介绍怎么使用了.
大表怎么做排序
如上图,通常来说数据结构为:

[
   {id:1 ,name:"task1" },
   {id:2 ,name:"task2" },
   {id:3 ,name:"task3" },
]

(交换1和3)排序以后可能变为:

[
   {id:3 ,name:"task3" },
   {id:2 ,name:"task2" },
   {id:1 ,name:"task1" },
]

注:(交换1和3需要拖动2次哦)
这里分2种情况,
第1种是直接保存所有排序结果
第2种是分步保存排序结果

方案一: 一次性保存排序结果

适合小表.
假设后端数据库原先是这样保存的:

IDName
3task3
2task2
1task1

添加一个字段就可以实现有序态

IDNameOrder
3task31
2task22
1task13

Order字段需要前端js自动处理好发送到端.
后果: 这样做的话,每次排序后端都要改所有行! 没错,所有相关行,
如果是大表,如有几千行的数据肯定不应该这样做排序.

方案二:分步保存排序结果

适合:需要手动排序表
可拖动的列表最好使用分步保存排序.
这需要在后端加2个字段

IDNameBeforeafter
3task32null
2task213
1task1null2

每次拖动都把拖动的一行结果发给后端

方案三:大表的排序保存

大表的排序应该单独加一个排序状态表.这适合表格排序后保存状态.

IDNameSortTypeId
3task31
2task21
1task11

这里指定排序类型的ID

SortTypeIDSortValuedesc
13,2,1张三的排序
21,4,5,6,7,100,200省份排序

前端每次把排序的结果发送给后端就O了.
很显然这不适合超大表.

对比

排序状态保存的方案还有很多,多注意跟前后端耦合.不管什么方案前后端新增的工作量都很大.
分步保存对后端最友好,后端压力最小(多用户操作)
小表一次性保存对前后端都友好(主要是取数据后分析数据方便,不适合多用户)
大表一次性保存对前后端都不友好,因为要解析”3,2,1”这类字符串.
如果不是滋滋必较用大表方案就行了.
有现成的框架么?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值