1
我基本上試圖用MEAN創建一個註冊頁面,我想檢查數據庫(使用Mongoose的Mongo),如果用戶和電子郵件已經存在,if其中一個是真的,發送res.json失敗。MEAN Stack應用程序 - 發送後無法設置標題
如果用戶名和電子郵件尚未在數據庫中,請繼續添加該用戶。
我收到一條錯誤消息「發送後無法設置標題」。在節點控制檯上,我試圖找出原因。
一旦User.getUsername()在回調中返回一個用戶(如果用戶名傳遞存在於數據庫中),它不應該返回json並在那裏結束請求嗎?爲什麼它繼續User.adduser()函數並嘗試在那裏設置標題?
任何幫助表示讚賞,謝謝。
router.post('/register', (req, res, next) =>{
let newUser = new User({ // Collect body info
name: req.body.name,
email: req.body.email,
username: req.body.username,
password: req.body.password
});
// Check if username is available
User.getUserByUsername(newUser.username, (err, user) => {
if(err) throw err;
if(user){
return res.json({success: false, msg: 'User already exists'});
// I want to end here if there's a user
}
});
//Continue to add user if getUserByUsername() returns false for user
// Add user
User.addUser(newUser, (err, user) => { // Add user
if(err){
return res.json({success: false, msg: 'Failed to register'});
} else {
return res.json({success: true, msg: 'You have been successfully registered!'});
}
});
});
非常感謝!是的,這是我想如何實現它。但是,我認爲一旦我添加checKIfEmailExists()方法也會非常麻煩。我現在有它的工作,它檢查用戶名的唯一性,在回調中,它檢查電子郵件和檢查電子郵件回調中,如果用戶名和電子郵件都很好,它會添加用戶。它的工作原理非常混亂,不可讀 – Berimbolo