나는 Vue.js와 익스프레스와 MongoDB와 웹 응용 프로그램을 쓰고 있어요. Express 서버에는 Vue 클라이언트가 사용할 두 경로가 있습니다. POST :/post; 얻으십시오 :/포스트; 첫 번째는 게시물을 게시하고 다른 게시물은 게시물을 얻는 것입니다.익스프레스 게시 후 얻을 수 없습니다
게시 할 때 (클라이언트가 POST/POST를 요청); 게시물이 성공적으로 게시 된 다음 클라이언트가 첫 페이지로 이동하여 (클라이언트가 GET/POST를 요청) 서버 오류 : '보낸 후 헤더를 설정할 수 없습니다.', 서버를 다시 시작해야합니다. , 그리고 모든 것이 잘 작동하면 지금 게시 된 게시물이 정상적으로 표시됩니다.
나는 많이 시도했지만 해결할 수 없다. 도움이 필요하다.
표현의/포스트 라우터 : 그렇지 않으면, 두 번 마지막을status
헤더를 설정하려고합니다,
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;
'newPost.save()'함수에서 일어나는 일과 관계없이'res.send ({});를 사용하면 논리적 인 결함이있는 것처럼 보입니다. 그러나 실패 할 경우, 'status' 헤더를 다시 보냅니다. 헤더는 이미 보내 졌으므로 비동기'save()'함수 밖에서 출력하기 시작했습니다. – adeneo
그냥 res.end()로 수정하지만, 동일한 오류 – laoqiren
newPost.save()가 잘 실행됩니다. '/ post'를 가져올 때 오류가 발생합니다. – laoqiren