我正在使用Vue.js和Express和MongoDB编写Web应用程序。 Express服务器有两条Vue客户端将使用的路由:POST:/ post; GET:/ post;第一个是发布帖子,另一个是发帖子;
当我发布帖子时(客户端发帖/发帖);帖子发布成功,然后客户端转到第一页获取帖子(客户端请求GET / post),但服务器错误:'发送后无法设置标题。',我必须重启服务器,然后一切顺利,刚刚发布的帖子正常显示。
我已经尝试了很多,但我无法解决,我需要你的帮助。
快递的/ 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("publish failed");
res.status(500);
res.send({error:1});
}
console.log('publish done');
});
res.status(200);
res.send({});
} catch(err){
res.status(401);
res.send('no token');
}
}
});
module.exports = router;
答案 0 :(得分:2)
更改您的路线
router.get('/',function(req,res,next){
Post.get(function(err,posts){
if(err){
res.status(404);
res.end();
} else {
res.status(200);
res.json({
posts:posts
});
}
});
});
router.post('/', function(req, res, next) {
var token = req.body.access_token;
if (token) {
var decoded = jwt.decode(token, req.app.get('jwtTokenSecret'));
if (decoded.exp < Date.now()) {
console.log("haha")
res.end('token expired', 401);
} else {
var newPost = new Post({
name: decoded.iss,
title: req.body.title,
content: req.body.content
});
newPost.save(function(err, post) {
if (err) {
console.log("publish failed");
res.status(500);
res.send({error: 1});
} else {
res.status(200);
res.send({});
}
});
}
} else {
res.status(401);
res.send('no token');
}
});
module.exports = router;
或者在error子句中返回,否则它将尝试设置status
标题两次,这是生成输出后的最后一次。