Я видел эту проблему несколько раз в SO и в других местах, но все равно не мог заставить мой код работать. При попытке создать новый документ в узле из запроса POST я получаю следующую ошибку:Ошибка сохранения узла «Невозможно установить заголовки после их отправки»
_http_outgoing.js:346
throw new Error('Can\'t set headers after they are sent.');
^
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:346:11)
at ServerResponse.header (/Users/joshuaswiss/CGA-Code/Transfers/mean-transfers/api/node_modules/express/lib/response.js:718:10)
at ServerResponse.send (/Users/joshuaswiss/CGA-Code/Transfers/mean-transfers/api/node_modules/express/lib/response.js:163:12)
at ServerResponse.json (/Users/joshuaswiss/CGA-Code/Transfers/mean-transfers/api/node_modules/express/lib/response.js:249:15)
at /Users/joshuaswiss/CGA-Code/Transfers/mean-transfers/api/controllers/transfersController.js:23:12
at /Users/joshuaswiss/CGA-Code/Transfers/mean-transfers/api/node_modules/mongoose/lib/document.js:1743:19
at handleError (/Users/joshuaswiss/CGA-Code/Transfers/mean-transfers/api/node_modules/hooks-fixed/hooks.js:40:22)
at _next (/Users/joshuaswiss/CGA-Code/Transfers/mean-transfers/api/node_modules/hooks-fixed/hooks.js:46:22)
at fnWrapper (/Users/joshuaswiss/CGA-Code/Transfers/mean-transfers/api/node_modules/hooks-fixed/hooks.js:186:18)
at /Users/joshuaswiss/CGA-Code/Transfers/mean-transfers/api/node_modules/mongoose/lib/schema.js:234:13
at complete (/Users/joshuaswiss/CGA-Code/Transfers/mean-transfers/api/node_modules/mongoose/lib/document.js:1128:7)
at /Users/joshuaswiss/CGA-Code/Transfers/mean-transfers/api/node_modules/mongoose/lib/document.js:1157:20
at ObjectId.SchemaType.doValidate (/Users/joshuaswiss/CGA-Code/Transfers/mean-transfers/api/node_modules/mongoose/lib/schematype.js:654:22)
at /Users/joshuaswiss/CGA-Code/Transfers/mean-transfers/api/node_modules/mongoose/lib/document.js:1153:9
at doNTCallback0 (node.js:428:9)
at process._tickCallback (node.js:357:13)
[nodemon] app crashed - waiting for file changes before starting...
Мой код ниже. Когда я console.log request.body
, я получаю [object Object]
, а когда я регистрирую JSON.stringify(request.body)
, я получаю свой объект, который хочу. Я пробовал играть с добавлением возврата в transfer.save
, поскольку ошибка в этом, но не могла заставить его работать. Любая помощь приветствуется!
app.js
var express = require('express');
var app = express();
var logger = require('morgan');
var mongoose = require('mongoose');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var multer = require('multer');
var path = require('path');
var ejs = require('ejs');
var cors = require('cors');
var passport = require('passport');
var port = process.env.PORT || 3000;
mongoose.connect('mongodb://localhost:27017/rsstransfers');
var routes = require('./config/routes');
app.use(cors());
app.use(logger('dev'));
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true, parameterLimit: 5000}));
app.use(routes);
//runs server on port 3000
app.listen(3000, function() {
console.log('server has been started on port %s', port);
});
transferController.js
var Transfer = require('../models/Transfer');
//Get all transfers
function getAll(request, response) {
Transfer.find(function(error, transfers) {
if(error) response.json({message: 'couldn\'t find any transfers'});
response.json({ transfers: transfers });
}).select('-__v');
}
//Create a new transfer
function createTransfer(request, response) {
console.log('posting');
console.log('body: ' + request.body);
console.log(JSON.stringify(request.body));
var transfer = new Transfer(request.body);
debugger;
transfer.save(function(error) {
if(error) response.json({ message: 'could not create transfer because ' + error });
response.json({ transfer: transfer });
});
}
//Delete
function removeTransfer(request, response) {
var id = request.params.id;
Transfer.remove({_id: id}, function(error) {
if(error) response.json({message: 'Could not delete transfer b/c:' + error});
response.json({message: 'Transfer successfully deleted'});
}).select('-__v');
}
module.exports = {
getAll: getAll,
createTransfer: createTransfer,
removeTransfer: removeTransfer
}
См., Я пробовал это, и он удаляет ошибку, но не добавляет документ в мою базу данных. Я неправильно понял, что проблема с заголовками все еще вызывает это. Спасибо, я задам еще один вопрос, как правильно его добавить –