昨晚,我使用的是假定完全相同的代码,我的cookie被保存到数据库中的对象中。我以为一切都很好,所以我部署到了Heroku。到达那里后,我推送到数据库的所有键都显示为null。从那以后,同一件事发生在本地。这是我的整个路线。要解决的一些问题: 1.可以在res对象上设置cookie,然后像在这里一样立即引用它吗? 2.它显示为null,因为我先设置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;