2013-07-30 25 views
0

我試圖做這樣創建一個res.cookie:當一個請求進入JSON格式與價值創造res.cookie爲對象

function createCookie(res, loginToken, user) { 
    res.cookie(
    'testcookie', 
    { 
     'logintoken': loginToken.cookieValue, 
     'user_id' : user.id, 
     'username' : user.name 
    }, 
    { 
     expires: new Date(Date.now() + 2 * 604800000), 
     path: '/' 
    } 
); 
} 

然後我訪問餅乾這樣的:

console.log (req.cookies) 

我得到這樣的輸出:

{ 
    ... 
    testcookie: '[object Object]' 
} 

如果我嘗試這樣做:

JSON.parse(testcookie)  // it errors not not being a valid JSON object 
    JSON.stringify(testcookie) // does not help either. 

如何在JSON對象中發送res.cookie,以後可以在從req對象讀取後再解析?

請指點?

+0

那是[快車](http://expressjs.com/)'['res.cookie()'](http://expressjs.com/api.html#res.cookie)?如果是這樣,你安裝了什麼版本的Express? –

+0

我正在使用快遞2.5.1 – GJain

回答

2

Object傳遞給res.cookie()並將其自動字符串化爲JSON的選項是new feature of Express 3.x

對於快遞2.x中,你會創建cookie時需要stringify它自己:

function createCookie(res, loginToken, user) { 
    var jsonValue = JSON.stringify({ 
    'logintoken': loginToken.cookieValue, 
    'user_id' : user.id, 
    'username' : user.name 
    }); 

    res.cookie(
    'testcookie', 
    jsonValue, 
    { 
     expires: new Date(Date.now() + 2 * 604800000), 
     path: '/' 
    } 
); 
} 

而且可能要parse它自己以及:

var testcookie = JSON.parse(req.cookies.testcookie); 
+0

@ user2384694我也更新了我的答案中的第一個片段,所以差異可能並不那麼微妙。 –

+0

哇...你的新代碼工作....我可以訪問單個cookie的所有3個值....如果它不太麻煩有什麼區別?....無論如何thx一個很大! – GJain