2015-01-20 3 views
0

Я использую динамический веб-сайт parse.com для создания веб-сайта продукта. Я хочу использовать cookie cookie для хранения некоторых данных в cookie сессии bowser. Вот мой app.jsexpress.cookieSession() не сохраняет данные в файлах cookie

var express = require('express'); 
var parseExpressHttpsRedirect = require('parse-express-https-redirect'); 
var parseExpressCookieSession = require('parse-express-cookie-session'); 
var app = express(); 

// Global app configuration section 
app.set('views', 'cloud/views'); 
app.set('view engine', 'ejs');  

app.use(parseExpressHttpsRedirect()); 
app.use(express.bodyParser());  
app.use(express.cookieParser('YOUR_SIGNING_SECRET')); 
app.use(parseExpressCookieSession({ 
    cookie : { 
     maxAge : 3600000 
    } 
})); 

app.use(express.cookieSession()); 
app.use(app.router); 

У меня есть этот метод в app.js, который, как предполагается, возвращенные предметы, добавленных в корзине

function getProductsInCart(req) { 
    var productsInCart = req.session.productsInCart; 

    if(!productsInCart) { 
     return []; 
    } 

    return productsInCart; 
} 

И это метод, который добавляет новый продукт в корзина

app.get('/add-cart/*', function(req, res) {  
    var url = req.url; 
    var productId = url.split('/')[2]; 

    var productsInCart = getProductsInCart(req); 
    productsInCart.push(productId) 

    req.session.productsInCart = productsInCart; 
    console.log("productsInCart: " + JSON.stringify(productsInCart));  
}); 

проблема я столкнулся в том, что метод getProductsInCart всегда возвращает пустой массив, который означает, что сеанс не сохраняет объект в куки. Это должно быть достаточно простым, и я не могу понять, почему он не работает. Любой указатель был бы глубоко оценен.

+0

я подал ошибку на разборе. Вот он https://developers.facebook.com/bugs/330775347123504/ –

ответ

0

Существовали две вещи я делал неправильно

  1. использованием req.session вместо req.cookies
  2. с использованием куки в качестве обычных объектов Java Script.

Вот код, который работал

app.get('/add-cart/*', function(req, res) { 
    var url = req.url; 
    var productId = url.split('/')[2]; 

    var productsInCart = getProductsInCart(req); 
    console.log("productsInCart: " + JSON.stringify(productsInCart)); 

    productsInCart.push(productId); 
    res.cookie('productsInCart', productsInCart, { 
     signed: false, 
     expires: new Date(Date.now() + 1000000) 
    }); 

    res.send(req.cookies); 
}); 

function getProductsInCart(req) { 
    var productsInCart = req.cookies.productsInCart; 

    if(!productsInCart) { 
     return []; 
    } 

    return productsInCart; 
} 
Смежные вопросы