我有以下代码,但收到一条错误消息,指出我正在try 在发送重定向后修改标头.我认为这就是我处理if陈述和返回的方式.我已经修改了代码,现在重定向可以工作了,但我想我误解了逻辑.请参阅此处的第一个代码:
exports.postSignup = (req, res) => {
const email = req.body.email;
const password = req.body.password;
const confirmPassword = req.body.confirmPassword;
// check if user exist
User.findOne({ emailAddress: email })
.then((user) => {
if (user) {
console.log("user exists please log in!");
return res.redirect("/auth/login");
}
const newUser = new User({
emailAddress: email,
password: password,
cart: {
products: [],
},
});
return newUser.save();
})
.then((result) => {
console.log("added user");
res.redirect("/auth/login");
})
.catch((e) => {
console.log(e);
throw e;
});
};
有效的固定版本:
exports.postSignup = (req, res) => {
const email = req.body.email;
const password = req.body.password;
const confirmPassword = req.body.confirmPassword;
// check if user exist
User.findOne({ emailAddress: email })
.then((user) => {
if (user) {
console.log("user exists please log in!");
return res.redirect("/auth/login");
}
const newUser = new User({
emailAddress: email,
password: password,
cart: {
products: [],
},
});
return newUser.save();
})
.then((result) => {
// this makes the redirect only if the user is created
if (result) {
console.log("added user");
res.redirect("/auth/login");
}
})
.catch((e) => {
console.log(e);
throw e;
});
};
有人能帮我弄清楚为什么早期版本不起作用吗?我只能想象我调用了两次重定向().