У меня проблема при вводе данных в куки.
данные представляют собой массив и его большой размер, такой как product_id, name и многие другие.
но я вижу, что некоторые веб-сайты электронной коммерции, которые имеют функцию добавления данных в корзину, не сохраняются непосредственно в cookie-файлах, а только настраивают ее, поскольку при удалении cookie-файлов данные теряются, но при добавлении новых данных cookie-файлы памяти не увеличиваются.
так что мой вопрос, где хранятся данные? потому что я проверил это даже в локальном хранилище пусто
то, что я сделал, выглядит так:
Я ввожу данные в куки с массивом данных и меняю их на JSON.stringify
. в этом случае я просто поместил туда 2 данных и получил размер 2539, что означает его большой.
Мой контроллер добавить в корзину
import db from '../../config/conn';
export const addToCart = (req,res) =>{
var today = new Date();
var tomorrow = new Date();
tomorrow.setDate(today.getDate() + 1);
let reqBody = JSON.stringify(req.body);
let cart = [];
if(typeof req.cookies.cart == "undefined"){
cart.push(reqBody);
}else{
cart = JSON.parse(req.cookies.cart);
cart.push(reqBody);
}
cart = JSON.stringify(cart);
res.cookie('cart', cart, { maxAge: 24 * 60 * 60 * 1000, expired: tomorrow})
return res.status(200).json(cart);
}
Сервер
import express from 'express';
import bodyParser from 'body-parser';
// import passport from 'passport';
import connection from './config/conn';
import { CategoryRoutes,ProductRoutes,CartRoutes} from './modules';
import session from 'express-session';
import csrf from 'csurf'
import cors from 'cors'
import cookieParser from 'cookie-parser'
const app = express();
app.use(cookieParser());
app.use(session({
secret: 'iCtkGVe0-4FKIGgBopL2QUM9K-jIK9miZhQE',
resave: false,
saveUninitialized: true,
cookie: {
secure: true,
httpOnly: true,
maxAge: 24 * 60 * 60 * 1000
}
}));
app.use(csrf({ cookie: true }));
app.use((req,res,next)=>{
res.header('X-XSS-Protection', '1; mode=block');
res.header('X-Frame-Options','deny');
res.header('X-Content-Type-Options','nosniff');
res.removeHeader("X-Powered-By");
res.cookie('c_token', req.csrfToken());
next();
})
app.use(cors({ origin:'http://localhost:3000/',credentials:true}))
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use('/api/', [CategoryRoutes, ProductRoutes, CartRoutes]);
const port = process.env.PORT || 5000;
app.listen(port, (err) => {
if(err){
console.log(err);
}else{
console.log(`Server running on port ! ${port}`);
}
});
Что мне делать? Как правильно создать систему корзины?