我在写一个论坛webapp,vue+express+mongodb;
vue的app.vue下有一个首页/home,在这里向express发起方式为GET,路径为/post的请求,用于获取文章数据,另外一个vue路由为发表文章的路由,在这里发表文章,提交时访问express的/post,方式为POST。
测试能够正常获取文章数据,但是当我发表文章提交,express成功将文章保存到了数据库,返回200状态码,然后前端通过vue路由回到首页,再次向express发起请求获取文章数据,这时候express服务器就挂了。提示不能在响应头发送后再设置响应头。然后我只有重启服务器再访问首页,又能正常读取到文章数据了。求问怎么回事?
express的post路由如下:
var express = require('express');
var router = express.Router();
var Post = require('../models/post');
var moment = require('moment');
var jwt = require("jwt-simple");
router.get('/',function(req,res,next){
    Post.get(function(err,posts){
        if(err){
            res.status(404);
            res.end();
        }
        res.status(200);
        res.json({
            posts:posts
        });
    });
});
router.post('/',function(req,res,next){
    var token = req.body.access_token;
    if(token){
        try{
            var decoded = jwt.decode(token,req.app.get('jwtTokenSecret'));
            if(decoded.exp < Date.now()){
                console.log("haha")
                res.end('token expired',401);
            }
            //console.log(decoded)
             var newPost = new Post({
                name:decoded.iss,
                title:req.body.title,
                content:req.body.content
            });
            console.log(newPost);
            newPost.save(function(err,post){
                if(err){
                    console.log("发表文章失败");
                    res.status(500);
                    res.send({error:1});
                }
                console.log('发表文章成功');
            });
            res.status(200);
            res.send({});
        } catch(err){
            res.status(401);
            res.send('no token');
        }
    }
});
module.exports = router;求大神相助,谢谢啦
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
post 方法如果以成功结束需要调用 res.redirect('/').