Я изучаю создание 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
Но здесь, кажется, просто используются неправильные настройки в его тесте и получает сообщение об ошибке. Единственная ошибка, которую я получаю, - это таймаут.
Что произойдет, если вы поместите console.log в функцию сохранения? правильно ли оно называется? то есть, можете ли вы подключиться к монго? –
Я просто добавил следующий журнал, и он не отображается в консоли. 'dog.save (функция (ERR) { console.log ("Я пытаюсь спасти."); если (ERR) возвращение res.send (ERR); res.json ({сообщение: «Собака создана!»}); }); ' – nb5t3uv
Ошибка таймаута говорит о том, что она не подключается, но, похоже, проверяет логин без проблем (я проверил это, введя неверный пароль в адресе MongoDB и получил соответствующую ошибку). – nb5t3uv