2015-10-08 3 views
0

Я изучаю создание RESTful API с помощью Node и Express 4.0, и у меня возникают проблемы с тем, что POST req корректно работает при проверке с помощью Postman в Chrome. Запрос истекает, когда вызывается метод сохранения (я думаю - я новичок в этом).Timeout On POST Req Использование MEAN Stack

Вот мой базовый код:

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:[email protected]: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); 

приложение/модели/dog.js:

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

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

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

я тестировал код с Почтальон, выбрав POST из выпадающего меню и выбрав x-www-form-urlencoded с вкладки Body. Я заполнил ключ (имя) и значение «Клиффорд».

Запрошенное время ожидания.

Поэтому я добавил несколько журналов консоли для 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!' }); 
     }); 

    }); 

Все они появляются, в том числе «Собака по имени: Клиффорд». Насколько я могу судить, это означает, что это проблема с методом сохранения.

Что мне делать дальше? Любая помощь приветствуется. Я нашел схожую проблему: no req.body sent on POST requests

Но здесь, кажется, просто используются неправильные настройки в его тесте и получает сообщение об ошибке. Единственная ошибка, которую я получаю, - это таймаут.

+1

Что произойдет, если вы поместите console.log в функцию сохранения? правильно ли оно называется? то есть, можете ли вы подключиться к монго? –

+0

Я просто добавил следующий журнал, и он не отображается в консоли. 'dog.save (функция (ERR) { console.log ("Я пытаюсь спасти."); если (ERR) возвращение res.send (ERR); res.json ({сообщение: «Собака создана!»}); }); ' – nb5t3uv

+0

Ошибка таймаута говорит о том, что она не подключается, но, похоже, проверяет логин без проблем (я проверил это, введя неверный пароль в адресе MongoDB и получил соответствующую ошибку). – nb5t3uv

ответ

0

Это будет работать, если вы замените

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

по

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

Кстати, если вы ищете более эффективный способ отладки сервера узла, чем console.log() , Я рекомендую node-inspector.

+0

Замените его следующим образом: 'app.post ('/ dogs', function (req, res) { console.log (« Доступ к Mongoose. "); var dog = new Dog(); console.log (" Новая собака.") dog.name = req.body.name; console.log (« Собака названа: «+ dog.name») dog.save (function (err) { console.log ("I" м, пытаясь спасти "); если (ERR) возвращение res.send (ERR); res.json (. {сообщение: '! Собака создана}); }); });' И Я получаю сообщение «Can not POST/api/dogs» в Postman. – nb5t3uv

+0

Я только что клонировал инспектора узлов, и я с нетерпением жду, чтобы попробовать. Это может быть хорошей возможностью, если это окажется проблемой, которую нужно решить. – nb5t3uv

+0

Я верю у нас такой же точный код, и он работает для меня. Иногда случаются глупые ошибки, уверены ли вы, что ваш сервер узлов и сервер mongo подняты? ее теперь уже поздно, я уверен, что инспектор узлов поможет вам, это действительно хороший инструмент. –

Смежные вопросы