我正在尝试从这段视频复制Sails应用程序。
这是我的UserController
module.exports = {
'new': function(req, res) {
res.view()
},
'create': function(req, res, next) {
User.create(req.params.all(), function userCreated(err, user) {
if(err) {
console.log(err);
req.session.flash = {
err: err
}
return res.redirect('/user/new');
}
//res.redirect('/user/show/'+user.id);
res.json(user);
});
},
'show': function(req, res, next) {
User.findOne(req.param('id'), function foundUser(err, user) {
if(err) return next(err);
if(!user) return next();
res.view({
user: user
});
});
}
};当我试图访问显示函数http://localhost/user/show/4时,我得到的错误如下:
http.js:691
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.js:691:11)
at ServerResponse.res.setHeader (/home/codio/.nvm/v0.10.25/lib/node_modules/sails/node_modules/express/node_modules/connect/lib/patch.js:63:22)
at next (/home/codio/.nvm/v0.10.25/lib/node_modules/sails/node_modules/express/node_modules/connect/lib/proto.js:158:13)
at resume (/home/codio/.nvm/v0.10.25/lib/node_modules/sails/node_modules/express/node_modules/connect/lib/middleware/static.js:65:7)
at SendStream.error (/home/codio/.nvm/v0.10.25/lib/node_modules/sails/node_modules/express/node_modules/connect/lib/middleware/static.js:80:37)
at SendStream.EventEmitter.emit (events.js:95:17)
at SendStream.error (/home/codio/.nvm/v0.10.25/lib/node_modules/sails/node_modules/express/node_modules/send/lib/send.js:147:51)
at SendStream.onStatError (/home/codio/.nvm/v0.10.25/lib/node_modules/sails/node_modules/express/node_modules/send/lib/send.js:248:48)
at /home/codio/.nvm/v0.10.25/lib/node_modules/sails/node_modules/express/node_modules/send/lib/send.js:320:26
at Object.oncomplete (fs.js:107:15)我无法为此提供任何解决办法。有人能帮我解决这个问题吗?
注意:我正在使用Sails.Js版本: v0.10.5
发布于 2014-11-17 19:19:24
我不知道复制的标题是在哪里发送的,但是如果我是您,我会做的是尝试重写您的显示处理程序,如下所示:
'show': function(req, res, next) {
User.findOne(req.param('id'), function foundUser(err, user) {
if(err) {
return next(err);
} else if (!user) {
return next();
} else {
res.view({
user: user
});
}
});
}通过强制if / else if / else流,您可以保证这些语句中只有一个将被运行。我会尝试一下,看看它是否解决了您的问题,然后继续从那里调试。
https://stackoverflow.com/questions/26961421
复制相似问题