我有一个文件SignupResponse.js。
const foundRegisterUser = function(err, foundUser){
if(!err){
console.log("Não tivemos erros")
if(!foundUser){
if(req.body.password == req.body.passwordConfirmation){
User.register({username: req.body.email}, req.body.password, function(err, user){
if (err){/
console.log(err);
} else {
console.log("Success")
res.render("welcome")
}
})
} else {
res.render("registerFailure",{msg0:MSG_INVALID_PASSWORD, msg1:"", msg2:""})
}
} else {
res.render("registerFailure",{msg0:MSG_INVALID_USER, msg1:"", msg2:"" })
}
} else {
res.render("registerFailure",{msg0:MSG_ERROR_REGISTER, msg1:"", msg2:""})
}
}
const signupresponse = (req, res) => {
Register.findOne({username: req.body.email}, function(err, foundUser){
if(!err){ /
if(!foundUser){
console.log("Usuário não encontrado")
res.render("registerFailure",{msg0:MSG_NOT_FOUND_REGISTER_0, msg1:MSG_NOT_FOUND_REGISTER_1, msg2:MSG_NOT_FOUND_REGISTER_2 })
}
else {
User.findOne({username: req.body.email},
foundRegisterUser(err, foundUser)
)
}
} else {
res.render("registerFailure",{msg0:MSG_ERROR_REGISTER, msg1:"", msg2:"" })
}
})
}
module.exports = signupresponse
我尝试导出到app.js
const signupResponse = require("./funcoes/signupResponse")
app.post("/signup", signupResponse)
This return referenceError:res未定义,但当我将所有内容放入signupResponse并再次导出时,它工作得很好:
const signupresponse = (req, res) => {
Register.findOne({username: req.body.email}, function(err, foundUser){
if(!err){
if(!foundUser){
console.log("Usuário não encontrado")
res.render("registerFailure",{msg0:MSG_NOT_FOUND_REGISTER_0, msg1:MSG_NOT_FOUND_REGISTER_1, msg2:MSG_NOT_FOUND_REGISTER_2 })
}
else {
User.findOne({username: req.body.email}, function(err, foundUser) {
if(!err){
console.log("Não tivemos erros")
if(!foundUser){
if(req.body.password == req.body.passwordConfirmation){
User.register({username: req.body.email}, req.body.password, function(err, user){
if (err){/
console.log(err);
} else {
console.log("Success")
res.render("welcome")
}
})
} else {
res.render("registerFailure",{msg0:MSG_INVALID_PASSWORD, msg1:"", msg2:""})
}
} else {
res.render("registerFailure",{msg0:MSG_INVALID_USER, msg1:"", msg2:"" })
}
} else {
res.render("registerFailure",{msg0:MSG_ERROR_REGISTER, msg1:"", msg2:""})
}
})
}
} else {
res.render("registerFailure",{msg0:MSG_ERROR_REGISTER, msg1:"", msg2:"" })
}
})
}
module.exports = signupresponse
该应用程序运行良好,没有返回错误。 我不知道如何使用module.exports当有很多功能要导出的时候。 我如何导出这个signupResponse并在其中放入另一个函数而不出错? 谢啦!
这不是export
的问题,而是“res”变量的作用域问题。
在第一个代码示例中,出现此错误是因为您试图访问FoundRegisterUser
内部的res
对象,但此函数不知道res
对象。 您在其他函数signupresponse
中定义了一个res
对象,而res对象仅存在于该函数中。 FoundRegisterUser
不了解它。
它在第二个示例中起作用,因为在这种情况下不存在res
的作用域问题:所有内容都在同一个函数中,然后您的回调可以访问res
对象。
使第一个示例工作的一种方法是将FoundRegisterUser
的定义放在SignupResponse
内,如下所示:
const signupresponse = (req, res) => {
const foundRegisterUser = function(err, foundUser){ ... };
Register.findOne({username: req.body.email}, function(err, foundUser){...
它不会是最漂亮的,也会给结构改进留出很多空间,但它应该是可行的。