无法使用Express cookie解析器设置cookie

时间:2018-10-28 23:59:08

标签: javascript node.js express backend

昨晚,我使用的是假定完全相同的代码,我的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;

0 个答案:

没有答案