[英]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.