Я продолжаю получать это сообщение об ошибке: Can't set headers after they are sent
. Я довольно новый. Это простое приложение для списка дел, которое сохраняет каждый элемент в mongodb и отображает каждый элемент на странице. Он также имеет возможность удалять элементы. Кажется, все работает нормально, но я все еще продолжаю получать это сообщение. Сообщение об ошибке появляется каждый раз, когда я пытаюсь использовать маршрут элемента удаления. Как я уже сказал, он работает так, как я ожидаю. Он удаляет элемент из списка и из базы данных, но я все равно продолжаю получать это сообщение об ошибке. Вот то, что удаление маршрут выглядит следующим образом:Ошибка: не удается установить заголовки после их отправки ....? Node.js, mongodb
app.delete('/:id', function(req, res){
var removal = req.params.id;
MongoClient.connect(dbUrl, function(err, db){
var list = db.collection('list');
list.remove({ _id: ObjectId(removal)}, updateList(res));
});
res.redirect('/');
});
//update list displayed on page -- to be used via callback after db change
function updateList(res){
MongoClient.connect(dbUrl, function(err, db){
var list = db.collection('list');
list.find({}).toArray(function(err, docs){
res.render('index', { title: 'To do:', list: docs });
});
});
};
Я использовал res.redirect('/')
, чтобы сделать это таким образом, URL показано в адресной строке не отображается ObjectId каждого элемента я удалить, но похоже, что проблема может быть , потому что, когда я избавлюсь от него, ошибка не возникает. Но я не хочу, чтобы этот идентификационный номер показывался вверху. Делать это так, кажется, работает. Почему это дает мне сообщение об ошибке? Есть ли другой способ сделать это?
возможно дубликат [Как вернуть ответ от асинхронного вызова?] (HTTP: // stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous-call) И вам действительно нужно прочитать это, чтобы понять различные вещи, которые вы делаете неправильно здесь. –