1
我正在Nodejs中實現一個簡單的用戶註冊表單。我正在使用Express框架,Mongodb和Monk。我成功地實現了正常的數據庫插入。但現在,當我添加代碼來首先檢查輸入的電子郵件或用戶名是否存在時,它已經不存在了。問題是,當發現有相同電子郵件或用戶名的條目時,我使用res.end
發送錯誤響應,但代碼不會停在那裏並繼續執行其他條件,並最終插入文檔而不考慮條件,有時會給出錯誤can't set headers after they are sent
。下面是我對ajaxsignup航線代碼如何在發送迴應後停止nodejs ajax請求代碼
router.post('/ajaxsignup', function(req, res){
var db = req.db;
var formdata = req.body;
var collection = db.get('userscollection');
res.setHeader('Content-Type', 'application/json');
var emailExists = collection.findOne({"email": formdata.email}, function(err, doc){
if(err)
{
response = {'status': 0, 'err_code': err.code, 'err_msg': err.err};
res.end(JSON.stringify(response));
}
else
{
if(doc)
{
response = {'status': 0, 'err_code': 0, 'err_msg': 'This email id is already registered. Please use a different one.'};
res.end(JSON.stringify(response));
}
}
});//emailExists
var usernameExists = collection.findOne({"username": formdata.username}, function(err, doc){
if(err)
{
response = {'status': 0, 'err_code': err.code, 'err_msg': err.err};
res.end(JSON.stringify(response));
}
else
{
if(doc)
{
response = {'status': 0, 'err_code': 0, 'err_msg': 'This username is already in use. Please use a different one.'};
res.end(JSON.stringify(response));
}
}
});//usernameExists
formdata.created = new Date();
formdata.last_updated = formdata.created;
collection.insert(formdata, function(err, doc){
if(err)
{
response = {'status': 0, 'err_code': err.code, 'err_msg': err.err};
}
else
{
response = {'status': 1, 'msg': 'Thank you. You can proceed to login now.'};
}
res.end(JSON.stringify(response));
});//insert
});//ajaxsignup