2012-11-06 77 views
3

我有我推到我的會話的用戶對象登錄。用戶對象是一個sequelize用戶對象實例,它有許多有用的方法。nodejs會話只存儲json?

當我讀的對象從會議回來,所有我現在已經是我的對象的JSON表示。所有有用的方法都消失了。

節點問:是否有可能把完整的對象到會話中,不只是JSON交涉?

續集問題:擁有對象的json表示形式,是否可以構造完整的續集對象而無需重新查詢?

+0

你還記得這個@mkoryak的結果?什麼是最好的方法? – Scott

回答

0

可以單獨的對象功能和數據,例如:

user.prototype.methods = userMethods; 
user.prototype.data = req.session.userData 

function userMethods(){ 

} 
0

,我們在談論什麼樣的會議?

  1. 對於cookie的會話:序列化一切都會使客戶端的頭龐大(慢/大請求),並願意負擔您的服務器更與每個請求。

  2. 對於數據庫支持的會話:您存儲在cookie小會話ID,那麼你必須查詢數據庫,在任何情況下,會話對象。

    使用查詢,以獲得完整的用戶對象,而不是通過保存在cookie中的用戶ID,而不是會話ID。

最後選項:

  1. 圖如何從數據中sequelize實例化一個用戶對象。我還沒有使用的ORM,但我用其他的ORM的東西(貓鼬),您可以從它的數據,這將給你訪問所有你又錯過了有用的方法實例化一個對象回來。

編輯:從文檔,我在想,你可以得到保存在您的會話(session.user)的JSON,然後恢復用戶實例是這樣的:

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

由於用戶模型的JSON可能會包括你的主鍵(電子郵件或用戶名或東西),然後你可以使用restoredUserInstance.save()和所有其他方法如預期(保存會更新等),讓我知道,如果不工作,我們可以進一步挖掘進入文檔/代碼。

我當時一看,發現如何從實例化JSON實例下面的解釋,而不調用DB find()https://github.com/sdepold/sequelize/issues/191

+0

最後的選擇是我所需要的。生病了看着它 – mkoryak