簡體   English   中英

使用MEAN堆棧的POST請求超時

[英]Timeout On POST Req Using MEAN Stack

我正在學習使用Node和Express 4.0創建RESTful API,並且在通過Postman在Chrome中進行測試時無法使POST req正常工作。 當調用save方法時,請求超時(我想-我對此很陌生)。

這是我的基本代碼:

server.js:

var express = require('express');   
var app = express();
var bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

var port = process.env.PORT || 8080;

var mongoose = require('mongoose');
mongoose.connect('mongodb://node:node@ds033484.mongolab.com:33484/testdatabase');

var Dog = require('./app/models/dog');

var router = express.Router(); 

router.route('/dogs')
    .post(function(req, res) {
        var dog = new Dog();
        dog.name = req.body.name; 
        dog.save(function(err) {
            if (err)
                return res.send (err);
            res.json({ message: 'Dog created!' });
        });

    });

app.use('/api', router);

app.listen(port);
console.log('Code is testable on port ' + port);

app / models / dog.js:

var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;

var DogSchema   = new Schema({
    name: String
});

module.exports = mongoose.model('Dog', DogSchema);

我使用Postman測試了代碼,從下拉菜單中選擇POST,然后從“正文”選項卡中選擇x-www-form-urlencoded。 我填寫了鍵(名稱)和值“ Clifford”。

請求超時。

因此,我在server.js中添加了一些控制台日志:

router.use(function(req, res, next) {
    console.log('Router is in use.');
    next();
});

router.route('/dogs')
    .post(function(req, res) {
        console.log("Accessing Mongoose.");
        var dog = new Dog();
        console.log("New dog.");
        dog.name = req.body.name; 
        console.log("The dog is named: " + dog.name);
        dog.save(function(err) {
            if (err)
                return res.send (err);
            res.json({ message: 'Dog created!' });
        });

    });

所有這些都顯示出來,包括“狗被命名為:克利福德”。 據我所知,這意味着save方法存在問題。

接下來我該怎么辦? 任何幫助將非常感激。 我在這里發現了類似的問題: POST請求未發送任何req.body

但是這里的OP似乎只是在測試中使用了錯誤的設置,並出現錯誤。 我得到的唯一錯誤是超時。

如果您更換它會起作用

router.route('/dogs').post(function(req, res) {});

通過

app.post('/dogs', function(req, res) {});

順便說一句,如果您正在尋找一種比console.log()更有效的方法來調試節點服務器,我建議使用node-inspector

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM