提问人:Oscar R 提问时间:11/6/2022 更新时间:11/6/2022 访问量:204
哪种后端设计选择更适合处理来宾用户?将访客存储为具有is_guest字段的用户,还是在会话中存储访客数据?
Which back-end design choice is better for handling guest users? Storing guests as users with is_guest feild, or storing guest data on the session?
问:
我正在建立一个电子商务网站,它应该能够处理客人结账。当用户访问网站时,除非他们注册/登录其帐户,否则他们被视为“访客”。
但是,即使作为访客,也需要存储有关该访问者的某些信息(部分以防他们在未来创建帐户,但也只是为了让网站为他们运行),例如他们的首选货币、电子邮件(如果提供)、购物车及其内容,以及order_id(如果他们下了订单)
我的问题是以下哪种选择更适合处理此问题?
顺便说一句:我在这个项目中使用了 NodeJS。express-session
为所有新访客创建一个“用户”对象,并将user_id添加到会话中。在这种情况下,该用户对象将需要一个字段来区分两者,并且还需要一个字段,以便前端可以判断是加载登录表单还是配置文件页面,因为用户对象将始终存在。
is_guest: true/false
is_logged_in: true/false
仅在通过注册表单注册帐户后创建“用户”对象,并存储有关购物车和电子邮件等的所有数据。而是用于会话对象上的来宾。
我可以看到两者的问题。1) 如果所有新访问者都创建一个用户对象,则可能会导致数据库非常大。2) 可能导致信息更加分散,会话对象变得杂乱无章(尤其是当购物车变大时)。我以前从未做过这样的事情,我会对任何关于反对或解决方案的想法,以及你认为最好的方法。
答:
这两种解决方案都很好,我已经看到两者都被使用。
我猜在数据库中存储东西更常见。由于无论如何您都可能会在数据库中记录用户交互,因此它不会占用更多数据。其次,使用相同的函数为登录和注销用户呈现页面稍微简单一些。
如果您不使用数据库,您可能希望使用 LocalStorage 而不是 cookie,因为 cookie 有大小限制(尽管很少有购物车会变得足够大以达到该限制)。
评论