Есть код на nest, который добавляет товары корзины в сессию. При отправке запроса с postman, сессия сохраняется и корзина обновляется(убирается товар, добавляется новы и т.д.). При отправке запроса с клиента react, через axios, сессия не сохраняется, и каждый раз приходин новый экземпляр корзины. Гуглю уже день, так и не смог решить проблему. Есть предположение, что проблема на стороне клиента. Код:
main.ts(nest)
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.enableCors({
origin: 'http://localhost:3000',
credentials: true,
})
app.use(session({
secret: SESSION_SECRET,
resave: false,
saveUninitialized: true,
cookie: {secure: false, maxAge: 360000, sameSite: 'strict'},
})
)
app.setGlobalPrefix('api')
await app.listen(8000);
}
Добавление товара в корзину:
@Post()
async addToCart(@Body() body: AddToCartDto, @Session() session: Record<string, any>, @Res() res: Response) {
const {productId, quantity} = body
const cart = session.cart || {items: [], totalPrice: 0}
// console.log(cart)
console.log(session)
const existingItem = cart.items.find((item) => item.id === productId);
if (existingItem) {
existingItem.quantity += quantity;
} else {
const product = await this.productsService.findOne(productId)
const newItem = { id: productId, title: product.title, quantity, price: product.priceUAN };
cart.items.push(newItem);
}
cart.totalPrice = cart.items.reduce((total, item) => total + item.price * item.quantity, 0);
session.cart = cart
res.json({cart})
}
Код добавления товара на стороне клиента:
export const addToCart = (productId: number, quantity: number): ThunkType => async dispatch => {
try {
const data = {productId, quantity}
const config = {
headers: {'SameSite': "Strict"},
withCredentials: true
}
const response = await axios.post(`${process.env.REACT_APP_API_URL}/cart`, data, config)
console.log(response)
dispatch({type: SET_CART_SUCCESS, cart: response.data.cart})
} catch (e) {
console.log(e)
}
}