Javascript express can';投递后我无法得到
我正在用Vue.js、Express和MongoDB编写一个web应用程序。Express server有两条Vue客户端将使用的路由:POST:/POST;获取:/post;第一个是发布帖子,另一个是获取帖子 当我发布帖子时(客户请求帖子/帖子);帖子发布成功,然后客户端转到第一页获取帖子(client beg get/post),但是服务器错误:“发送后无法设置标题”,我必须重新启动服务器,然后一切正常,刚才发布的帖子显示正常 我试了很多,但我解决不了,我需要你的帮助 express的/post路由器:Javascript express can';投递后我无法得到,javascript,node.js,express,vue.js,Javascript,Node.js,Express,Vue.js,我正在用Vue.js、Express和MongoDB编写一个web应用程序。Express server有两条Vue客户端将使用的路由:POST:/POST;获取:/post;第一个是发布帖子,另一个是获取帖子 当我发布帖子时(客户请求帖子/帖子);帖子发布成功,然后客户端转到第一页获取帖子(client beg get/post),但是服务器错误:“发送后无法设置标题”,我必须重新启动服务器,然后一切正常,刚才发布的帖子显示正常 我试了很多,但我解决不了,我需要你的帮助 express的/po
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;
var express=require('express');
var router=express.router();
var Post=require('../models/Post');
var力矩=要求的(‘力矩’);
var jwt=要求(“jwt简单”);
router.get('/',函数(req,res,next){
get(函数(err,posts){
如果(错误){
物质状态(404);
res.end();
}
物质状态(200);
res.json({
职位:职位
});
});
});
router.post('/',函数(req,res,next){
var token=req.body.access\u token;
如果(令牌){
试一试{
var decoded=jwt.decode(token,req.app.get('jwtTokenSecret'));
if(decoded.exp
更改路线
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;
router.get('/',函数(req,res,next){
get(函数(err,posts){
如果(错误){
物质状态(404);
res.end();
}否则{
物质状态(200);
res.json({
职位:职位
});
}
});
});
router.post('/',函数(req,res,next){
var token=req.body.access\u token;
如果(令牌){
var decoded=jwt.decode(token,req.app.get('jwtTokenSecret'));
if(decoded.exp
或者在error子句中返回,否则它将尝试设置
状态
头两次,这是生成输出后的最后一次。似乎是一个逻辑缺陷,您正在执行res.send({})
不管在newPost.save()
函数中发生了什么,但是如果失败,您将尝试再次设置状态
头,但是您不能,因为头已经发送,并且您已经开始在异步save()
函数外部输出。我只是将其修改为res.end(),但是相同的错误newPost.save()运行良好,GET'/post'时出错。GET
路由也会执行相同的操作,如果出错,它会尝试设置两次状态
头。现在我发现错误来自post.GET();但我不知道为什么,因为它在我重新启动服务器时工作。你能看一下我在github上的代码吗,地址是:github.com/laoqiren/vue-express-forum谢谢,现在我发现错误来自Post.get();但我不知道为什么,因为它在我重新启动服务器时工作。你能看一下我在github上的代码吗?地址是:谢谢,在帖子成功发布后,服务器试图打开mongodb时似乎出现了错误,但是GET'/post'没有捕捉到它。你的/post
路线也有同样的问题,多次send
,然后尝试设置标题。我将发布这两个路由已修复。我已经像上面的代码一样修改了它们,但是post.get()运行错误。mongodb在进入GET'/post'时无法打开,但当我重新启动服务器时,GET'post'运行良好