nodejs session stores only json?



我有一个登录的用户对象,我将其推入会话中。用户对象是续集用户对象实例,它在其上有许多有用的方法。

当我从会话中读回对象时,我现在所拥有的只是对象的JSON表示。所有有用的方法都消失了。

节点问题:是否可以将完整对象放入会话中,而不仅仅是JSON表示?

续集问题:具有对象的JSON表示,是否可以构造完整的续集对象而无需请求?

您可以分开对象功能和数据,例如:

user.prototype.methods = userMethods;
user.prototype.data = req.session.userData
function userMethods(){
}

我们在谈论哪种会话?

  1. 用于cookie会话:序列化所有内容都会使客户的标题庞大(缓慢/大的请求),并会在每个请求中增加服务器的负担。

  2. 用于数据库支持的会话:您在cookie中存储一个小的session-id,然后在任何情况下都必须查询会话对象的数据库。

    使用该查询来获取完整的用户对象,通过将用户ID保存在cookie而不是session-id中。

最后一个选项:

  1. 弄清楚如何从sequelize中的数据实例化用户对象。我还没有使用过该ORM,但是我使用过的其他ORM(猫鼬)使您可以从其数据中实例化对象,这将使您再次访问您再次丢失的所有有用方法。

编辑:在文档中,我认为您可以获取在会话中保存的JSON(session.user),然后还原这样的用户实例:

var restoredUserInstance = MyUserModel.build(session.user);

由于您的用户模型的JSON可能包括您的主键(电子邮件或用户名或其他内容),因此您可以使用restoredUserInstance.save()和所有其他方法,如预期的(保存将更新等)工作,我们可以进一步研究文档/代码。

我看了一下,找到了以下解释,即如何从JSON实例实例化db find():https://github.com/sdepold/sequelize/sequelize/issues/191

相关内容

最新更新