前端用 localstorage 保存部分数据用于数据回显,当用户切换账号时会出现数据串号的情况,如何解决?

2019-10-11 20:27:12 +08:00
 cococoder

如题,当然出现这个问题是当初设计的问题,没有做唯一标识识别,解决串号简单,但是该如何兼容老数据是个问题,如何保证上线后,不影响之前用户已经缓存在本地的数据

5376 次点击
所在节点    程序员
29 条回复
fengxianqi
2019-10-11 20:34:05 +08:00
让旧数据全部失效
murmur
2019-10-11 20:51:45 +08:00
注销的时候不清除数据么?或者用 cookies,
ayase252
2019-10-11 20:56:11 +08:00
注销清空所有保存的状态
lneoi
2019-10-11 20:59:12 +08:00
退出时清空,或者登陆存数据时清空旧数据,也可以增加一个字段做用户识别,看你具体数据情况
lukunlin
2019-10-11 23:31:24 +08:00
串号明显是你的业务代码有问题.
建议做给导图理清楚自己的登录系统的逻辑.
毕竟用 localStorage 存 token 也好还是其他,那么多人用都没什么问题
liuy1994g
2019-10-12 03:03:59 +08:00
你们什么数据这么重要还存本地,直接作废不就行了
keelii
2019-10-12 06:22:56 +08:00
用 ls 有个基本的逻辑,如果缓存的数据是没有个体差异的那就随便存,如果有那就要在缓存中添加必要的字段来区分数据。不过你得考虑到 ls 有大小限制,并不能让你当数据库使用。
reus
2019-10-12 06:46:16 +08:00
写代码把老数据迁移就行了
迁移完就删除
yuang
2019-10-12 07:50:29 +08:00
d2-admin 的做法是使用版本号和用户 id 作为标识,项目更新后之前的缓存自动失效
hanxiV2EX
2019-10-12 07:59:13 +08:00
区分用户数据和设备数据,谁生产的垃圾谁收拾。
IsaacYoung
2019-10-12 08:19:29 +08:00
localStorage.setItem(`${userId: ${key}}`, value)
ashong
2019-10-12 08:23:53 +08:00
查看有没有某个新数据,没有就全部读取写为新格式
ccyu220
2019-10-12 08:24:33 +08:00
我们系统用 customer id 来做标识符
xuanbg
2019-10-12 08:38:08 +08:00
数据要长久保存的话,加上用户 ID 作标识,取的时候用用户 ID 作条件查询即可。不需要长久保存的话,注销的时候清理掉就可以了。
sannyzeng
2019-10-12 09:02:15 +08:00
先检测一下哪些数据是属于会产生串号的数据,打开的时候直接清除。
后续的新数据都加上用户标识,就可以过渡了
fishbone0
2019-10-12 09:40:43 +08:00
给缓存附带用户唯一标识,串号是你业务代码有问题
kang77649119
2019-10-12 10:41:11 +08:00
根据用户 id 存数据, 取数据的时候根据用户 id 取,串号问题解决,老数据也不用清除
sjfkai
2019-10-12 10:45:30 +08:00
老数据可以在用户访问的时候整体刷一遍,带上用户标识。这样不就可以兼容老数据了…
lands
2019-10-12 11:26:31 +08:00
存的时候, key 带上用户标识
cococoder
2019-10-12 11:55:10 +08:00
@kang77649119 但是过渡阶段,用户已经缓存在本地的老数据虽然不用清除,但也没用上了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/608381

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX