Advertisement
Guest User

problema async

a guest
Aug 24th, 2019
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // asta este functia care face submit la formularl de creare al contului
  2.  
  3. function submitForm()
  4. {
  5.     // check whether values are valid or not
  6.     var xhttp = new XMLHttpRequest();
  7.     xhttp.open("POST", "/areValuesValid");
  8.     xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  9.     let username = document.getElementById("username");
  10.     let email = document.getElementById("femail");
  11.     let params = `username=${username.value}&femail=${email.value}`;
  12.     alert(params);
  13.     xhttp.send(params);
  14.     console.log(xhttp);
  15.     var responseJSON = JSON.parse(xhttp.responseText.toString());
  16.     console.log(responseJSON);
  17.     if(responseJSON.msg == 'fail')
  18.     {
  19.         // there is a conflict ! the form must be recompleted
  20.         if(responseJSON.err == 'usernameTaken')
  21.         {
  22.             alert(`username taken! please user another username than: ${username.value}`);
  23.             window.location.reload();
  24.         }
  25.         else
  26.         {
  27.             // there is another similar email
  28.             alert(`email taken! please user another email than: ${email.value}`);
  29.             window.location.reload();
  30.         }
  31.     }
  32.     else
  33.     {
  34.         // the values are valid and cand be inserted into the database
  35.         document.forms["createForm"].submit();
  36.     }
  37. }
  38.  
  39. // asta este partea de cod din server, care preia xmlhttp request-ul din client si il prelucreaza, astfel incat sa determine daca datele introduse din formular sunt valide sau nu (daca mai exista dubluri in baza de date mysql)
  40.  
  41. app.post('/areValuesValid', function (req, res) {
  42.  
  43.     console.log("checking whether values are valid or not");
  44.     console.log(req.body.username + " " + req.body.femail);
  45.  
  46.     let usernameTaken = false;
  47.     let emailTaken = false;
  48.  
  49.     function firstQuery()
  50.     {
  51.         // check if username is taken
  52.         var sql = `SELECT password FROM users WHERE username='${req.body.username}'`;
  53.         con.query(sql, function (err, result) {
  54.             if (!err) {
  55.                 if(result[0])
  56.                 {
  57.                     usernameTaken = true;
  58.                     return true;
  59.                 }
  60.                 else return false;
  61.             }
  62.             else throw err;
  63.         });
  64.     }
  65.  
  66.     function firstIf()
  67.     {
  68.         console.log("did the first if");
  69.         if(usernameTaken == false)
  70.         {
  71.             // check if email is taken
  72.             var sql = `SELECT password FROM users WHERE email='${req.body.femail}'`;
  73.             con.query(sql, function (err, result) {
  74.                 if (err) throw err;
  75.                 console.log(result[0]);
  76.                 if(result[0])
  77.                 {
  78.                     emailTaken = true;
  79.                     console.log('email is taken');
  80.                 }
  81.             });
  82.         }
  83.         return emailTaken;
  84.     }
  85.  
  86.     var doQuery = new Promise(function(resolve, reject){
  87.         //let decision = firstQuery();
  88.         //console.log(decision);
  89.         if(firstQuery())
  90.         {
  91.             console.log("resolved!");
  92.             resolve();
  93.         }
  94.         else
  95.         {
  96.             console.log("rejected!");
  97.             reject();
  98.         }
  99.     });
  100.  
  101.     doQuery.then(function(){
  102.         console.log("doQuery resolved!");
  103.         res.setHeader('Content-Type', 'application/json');
  104.         return res.send(JSON.stringify({msg:"fail",err:"usernameTaken"}));
  105.     }, function(){
  106.         console.log("doQuery rejected!");
  107.         var doFirstIf = new Promise(function(resolve, reject){
  108.             let secondDecision = firstIf();
  109.             if(secondDecision) resolve();
  110.             else reject();
  111.         });
  112.         doFirstIf.then(function(){
  113.             console.log("doFirstIf resolved!");
  114.             res.setHeader('Content-Type', 'application/json');
  115.             return res.send(JSON.stringify({msg: 'fail', err: 'emailTaken'}));
  116.         }, function(){
  117.             console.log("doFirstIf rejected!");
  118.             // there are no errors, no conflicts found, success
  119.             console.log("values are valid!");
  120.             res.setHeader('Content-Type', 'application/json');
  121.             return res.send(JSON.stringify({msg: 'success', err: 'null'}));
  122.         });
  123.     });
  124. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement