2 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超7個(gè)贊
您正在同時(shí)執(zhí)行 2 個(gè)異步操作。他們最終都試圖res.redirect('...');在用戶已經(jīng)被重定向后無(wú)法重定向。您if (userExists == false) {在上面的塊中進(jìn)行檢查之前執(zhí)行。
你可以像這樣鏈接你的回調(diào):
router.post('/', function(req, res, next) {
ssn = req.session;
ssn.firstName = req.body.fname;
ssn.lastName = req.body.lname;
ssn.userEmail = req.body.email;
ssn.userPass = req.body.pass;
MongoClient.connect(url, function(err, db) {
if (err) throw err;
let dbo = db.db("projectOne");
let myInfoLog = {
email: ssn.userEmail // Don't include the password!
};
// Check if email exists
dbo.collection("userInfo").findOne(myInfoLog, function(err, data) {
if (data.email) {
ssn.signUpError = "User email already exists";
console.log("data returns an active email");
db.close();
res.redirect('/');
} else {
const myInfo = {
fname: ssn.firstName,
lname: ssn.lastName,
email: ssn.userEmail,
pass: ssn.userPass
};
// Insert user
dbo.collection("userInfo").insertOne(myInfo, function(err, data) {
if (err) throw err;
console.log("collection inserted");
ssn.firstName = data.ops[0].fname;
ssn.lastName = data.ops[0].lname;
ssn.userEmail = data.ops[0].email;
ssn.userPass = data.ops[0].pass;
console.log("welcome! " + ssn.firstName + " " + ssn.lastName);
db.close();
res.redirect('/profile');
});
}
});
});
});
module.exports = router;

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
您應(yīng)該將您的if (userExists == false) {塊移動(dòng)到第一個(gè)查找中。
dbo
.collection("userInfo")
.findOne(myInfoLog, function(err, data) {
if (data.email) {
// handle case where user already exists
} else {
// handle case where user doesn't exist yet
}
添加回答
舉報(bào)