2017-06-14 124 views
0

在我sails.js應用我是第一個請求我隱瞞這條線req.session.userId="hello";Sails.js會話刷新

console.log(req.session.userId)返回後後建立的會話這樣

req.session.userId="hello"; 
    console.log(req.session.userId); 

undefined

回答

1

堅韌而沒有看到更多的控制器代碼,但是您正在設置的會話屬性僅在完成控制器操作後纔會被處理到會話中 - 例如返回一個視圖或JSON。

嘗試:

if(req.session && req.session.userId){ 
    //This user has an active session already so we have a userid 
    sails.log.info(req.session.userId); 
else{ 
    //Must be the first time this action was executed 
    req.session.userId = 'hello'; 
} 
res.view('index'); 

其中index爲您EJS視圖的名稱。如果你永遠不會返回任何東西,那麼會話屬性從不設置。

+0

感謝您的回答,這是我在我的控制器上試過的第一頁加載我已經與'req.session.userId ='hello'設置了會話;'它將訪問同一控制器中的另一個方法' concole.log(req.session.userId)'但我得到了undefind錯誤 – Jabaa

+1

是的,你不能在同一個動作中設置和獲取會話屬性'userId'。如果你沒有從控制器動作返回,那麼req.session.userId永遠不會被設置。所以你需要1)檢查req.session和req.session.userId 2)如果沒有設置,繼續設置它,如果已經設置,然後將其打印到控制檯3)通過返回視圖或json來完成請求。然後,當您刷新頁面時,代碼會重複執行,並會從先前執行的控制器操作中找到userId。希望有所幫助。 –

+0

服務器重新啓動會話時還有一個問題未定義爲什麼會發生? – Jabaa