app.get('/', function (req, res) {
mongoose.connect('mongodb://localhost/todo-list')
Todo.find({completed: false}, function (err, todos) {
if (err) throw err
res.render('homepage', {
allTodos: todos
})
mongoose.disconnect()
})
})
//
app.post('/create', function (req, res) {
// console.log(req.body)
// res.send(req.body)
todosController.create(req, res)
})
app.get('/listall', function (req, res) {
res.redirect('/listall')
todosController.list(req, res)
})
// and below is my controller
function list (req, res) {
if (!mongoose.connection.db) mongoose.connect('mongodb://localhost/todo-list')
Todo.find({}, function (err, todos) {
if (err) throw err
res.render('listall', {
allTodos: todos
})
mongoose.disconnect()
})
}
谁能告诉我如何修复这个>.< express显示的错误“发送后无法设置标题”。在ServerResponse.setHeader (_http_outgoing.js:371:11)
发布于 2017-04-09 01:33:26
问题来自于尝试向用户发送两次请求(通过呈现和重定向),此处:
app.get('/listall', function (req, res) {
res.redirect('/listall')
todosController.list(req, res)
})您将用户重定向到listall视图,但随后您调用了list方法,该方法尝试在此处呈现另一个页面:
res.render('listall', {
allTodos: todos
})您必须决定是将用户重定向到页面,还是将其呈现给他,并删除上面的其中一个。
发布于 2017-04-09 00:08:20
您只需删除此行,您的/listall路由就会正常工作:
res.redirect('/listall')发布于 2017-04-09 01:38:22
您的函数todosController.list(req, res)似乎也有一个res.send/res.redirect ...方法。但是您只能发送一次响应,所以如果有其他are的话。方法在你的请求流中,你会得到这个错误。
您可以将用户从您的todosController.list方法重定向,并从此处的app.get('/listall', function (req, res) { res.redirect('/listall') todosController.list(req, res) })中删除它
但要注意不要发送res。在单个请求中不止一次。流。
https://stackoverflow.com/questions/43295943
复制相似问题