Прошлой ночью я использовал точно такой же код, и мои cookie-файлы сохранялись в моих объектах в базе данных.Я думал, что все было хорошо, поэтому я развернул в Heroku.Оказавшись там, все ключи, которые я нажал на базу данных, показались как нулевые.С тех пор то же самое происходит на местном уровне.Вот весь мой маршрут.Несколько вопросов: 1. Можно ли установить cookie для объекта res, а затем ссылаться на него сразу после того, как я это сделал здесь?2. Он отображается как нулевой, потому что я устанавливаю cookie.key, а затем пытаюсь отправить cookie.cookie_name 3. :), но, возможно, есть другие причины, по которым он не работает.
const express = require('express');
const cookieParser = require('cookie-parser');
const router = express.Router();
const { ObjectID } = require('mongodb');
const mongoose = require('mongoose');
const { Item } = require('../models/item');
router.use(cookieParser());
router.use((req, res, next) => {
const id = req.body.id;
if (!req.cookie.key) {
res.cookie('key', Math.random());
}
res.setHeader('Content-Type', 'application/json');
Item.findById(id, 'voteKeys', (error, data) => {
if (data.voteKeys.includes(req.cookies.key)) {
const message = { message: 'You Already Voted.' };
res.send(JSON.stringify(message));
} else {
next();
}
});
});
router.post('/', (req, res, next) => {
const id = req.body.id;
Item.findOneAndUpdate({
_id: id.toString(),
}, {
$inc: {
votes: 1,
},
$push: {
voteKeys: req.cookies.cookie_name,
},
}, {
returnOriginal: false,
}).then((result) => {
});
});
module.exports = router;