节点 - 发布请求没有真正做任何事情

时间:2017-12-01 17:28:01

标签: javascript node.js express

我正在编写一个简单的MEAN应用程序,我目前正在研究这些路线。

在我的server.js中,我有

var express        = require('express');
var multer         = require('multer');
var upload         = multer({dest: 'uploads/'});
var sizeOf         = require('image-size');
var app            = express();
var mongoose       = require('mongoose');
var bodyParser     = require('body-parser');
var methodOverride = require('method-override');

// configuration ===========================================
require('./app/models/Purchase');
require('./app/models/Seller');
require('./app/models/User');
// config files
var db = require('./config/db');

var port = process.env.PORT || 8080; // set our port
// mongoose.connect(db.url); // connect to our mongoDB database 

// get all data/stuff of the body (POST) parameters
app.use(bodyParser.json()); // parse application/json 
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse        application/vnd.api+json as json
app.use(bodyParser.urlencoded({ extended: true })); // parse       application/x-www-form-urlencoded

app.use(methodOverride('X-HTTP-Method-Override')); // override with the      X-HTTP-Method-Override header in the request. simulate DELETE/PUT
app.use(express.static(__dirname + '/public')); // set the static files   location /public/img will be /img for users

// routes ==================================================
var routes = require('./app/routes/routes');//(app); // pass our    application into our routes
var price = require('./app/routes/pricing');
var processing = require('./app/routes/processing');
var uploads = require('./app/routes/uploads');
var seller = require('./app/routes/seller');


app.use('/', routes);
app.use('/price', price);
app.use('/processing', processing);
app.use('/uploads', uploads);
app.use('/seller', seller);


// start app ===============================================
app.listen(port);   
console.log('Magic happens on port ' + port);            
exports = module.exports = app;                         

然后,在我的路线中,我有

var express = require('express');
var mongoose = require('mongoose');
var Seller = mongoose.model('Seller');
var router = express.Router();

router.get('/', function(req,res){
    res.json({message: 'youre in router.get'});
});
router.post('/registerSeller', function(req,res,next){
        console.log('You made it all the way to seller route!');
        res.json({message: "you did it"});
        next();
});

module.exports = router;

当我启动节点服务器时,一切顺利。当我使用Postman POST到上面的路由时,它只是“挂起”并最终给出一条无法连接的错误消息。在Postman中,我选择'POST'到http://localhost:8080/seller/registerSeller.Clicking'代码',我得

POST /seller/registerSeller HTTP/1.1
Host: localhost:8080
Cache-Control: no-cache
Postman-Token: 070cb9b3-992a-ffd6-cede-c5b609bc9ce5
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

查看浏览器的开发人员工具,它显示正在进行的POST,然后一段时间后,它还会显示POST失败。

有谁能告诉我我做错了什么?谢谢。

1 个答案:

答案 0 :(得分:0)

问题是您正在响应,然后尝试在路由器堆栈中调用next()函数。

router.post('/registerSeller', function(req,res,next){
        console.log('You made it all the way to seller route!');
        return res.send({message: "you did it"});
        //next(); remove this shit.
});

这应该有效。 Express中间件按顺序排列。因此,如果您需要在此函数之前调用中间件,则必须将其放在堆栈之前。如果您需要在此功能后执行某些操作,请忘记res.json...部分。

相关问题