【发布时间】:2015-02-13 22:11:43
【问题描述】:
我该如何做到,如果已发回响应,则不应再发送响应? 实际上,问题在于,如果发回响应,则 express(或 nodejs)不应继续运行其余代码。
我尝试过 next() 但终端抛出 next() 未定义的错误。 res.end() 似乎也不起作用?
routing.js:
router.post('/user/create', function(req, res, next) {
user.createUser(req, res);
});
user.js 创建用户
user.prototype.createUser = function(req, res, next) {
var body = req.body;
checkAllInput(body, res, next);
// do some more checks then finally create user
}
user.js 创建用户
function checkAllInput(body, res, next) {
checkError.checkUsername(body, res, next);
checkError.checkPassword(body, res, next);
}
checkError.js
userClass.prototype.checkUsername = function(username, res) {
if (!username || username === "bob) {
res.status(406).send("username");
}
}
userClass.prototype.checkPassword = function(password, res) {
if (!password || password === "hello") {
res.status(406).send("password");
}
}
在路由中调用 createUser,然后调用 checkAllInput 调用 checkUsername 但如果用户名发送回响应则应该停止。
【问题讨论】:
-
请显示一些代码。
-
您发布的那些代码应该可以找到,但令人担忧的是,因为
else没有实现,所以您将永远不会响应某些请求...我们需要查看完整的您的路由处理程序的示例。 -
我的路由处理程序没有什么特别之处。只是您使用 express 的基本路由。 router.post('/user/create', function(req, res) { user.createUser(req, res); });并 createUser 接受 req,然后调用上面的函数。