MONGOLAB CONNECTION EXAMPLE - MahdiMahava/hello_world GitHub Wiki

MONGOLAB CONNECTION EXAMPLE

COMMON STRUCTURE

// 1) Create connection

var xhr = new XMLHttpRequest();

//SPECIFY REQUEST TYPE, URL and PARAMETERS

xhr.open('GET', 'https://api.mongolab.com/api/1/databases/mailhandler/collections/locks?apiKey=' + mongoAPI_KEY, true);

// SEND REQUEST

xhr.send();

//WAIT UNTIL REPLY xhr.onreadystatechange = function() {

  if (xhr.readyState != 4) return;
  if (xhr.status != 200)
   {
     alert("ERROR!" + xhr);
   } 
   else 
    {
        var parsedresponse = JSON.parse(xhr.responseText);
        for (var childItem in table.childNodes) 
             {
               var result = table.childNodes[childItem].someattribute;

             }   
    }

} }

//MONGO DB INTERACTION

var mongoAPI_KEY = 'zB4cXF8ikkegTQhmdggdq9dTC53m5K9q';

//Get all Lock Records function getalllocks() { //alert('check'); var xhr = new XMLHttpRequest(); xhr.open('GET', 'https://api.mongolab.com/api/1/databases/mailhandler/collections/locks?apiKey=' + mongoAPI_KEY, true);

xhr.send();

xhr.onreadystatechange = function() {

     //alert('2');
     if (xhr.readyState != 4) return;
  if (xhr.status != 200)
   {
     alert("ERROR!" + xhr);
   } 
   else 
    {
      //alert('3');
       console.log('start... ');
       var table =  document.getElementById('mailstable');
       var parsedresponse = JSON.parse(xhr.responseText);
        for (var childItem in table.childNodes) 
             {
               var numberid = table.childNodes[childItem].id;
               for(var j in parsedresponse)
                {
                  if(table.childNodes[childItem].id == parsedresponse[j].id)
                    {
                        console.log('mark locked' +  table.childNodes[childItem].id);
                        var row = document.getElementById(parsedresponse[j].id);
                        row.cells[0].innerHTML = 'NO ';
                    }
                    else
                    {    
                      try
                      {
                        console.log('mark unlocked' +  numberid);
                        var row = document.getElementById(numberid);
                        row.cells[0].innerHTML = 'YES';
                      }
                      catch(e)
                      {
                        
                      }
                    }
                }
             }
             
            
    }

} }

//write function startwrite(id) { //var id = "testing...."; var datenow = new Date(); var json = JSON.stringify({"id":id,"date":{"$date":datenow}}); var xhr = new XMLHttpRequest(); xhr.open("POST", "https://api.mongolab.com/api/1/databases/mailhandler/collections/locks/?apiKey=" + mongoAPI_KEY, true); xhr.setRequestHeader("Content-Type", "application/json"); xhr.send(json); }

//CheckResponse function checklock(id) { //alert('1'); var xhr = new XMLHttpRequest(); var query = JSON.stringify({"id":"test2"}); xhr.open('GET', 'https://api.mongolab.com/api/1/databases/mailhandler/collections/locks?apiKey=' + mongoAPI_KEY + '&q={"id":"'+id+'"}&c=true', true); //xhr.setRequestHeader("Content-Type", "application/json"); xhr.setRequestHeader("q",'{"id":"test2"}'); //xhr.setRequestHeader("c",true); //xhr.send(); //var query = 'q="id":'+id; // 3. Отсылаем запрос xhr.send(); //xhr.send();

// 4. Если код ответа сервера не 200, то это ошибка

xhr.onreadystatechange = function() { //alert('2'); if (xhr.readyState != 4) return; if (xhr.status != 200) { //alert("ERROR!" + xhr);

   } 
   else 
    {
        // вывести результат
        if(xhr.responseText == 0) 
     {
        startwrite(id);
        mailclick_proceed(id);
     }
     else
     {
       //alert('blocked');
       
        var leftdiv = document.getElementById('div2');
        leftdiv.innerHTML = '<br/<br/><center><img style = "width:35px; height:35px" src ="images/padlock-lock-icon.png"><br/><label> Письмо уже обрабатывается </label>  <br/> <button onclick = "closeright()"> Ок </button></center>';
       
     }
        console.log(xhr.status + '   NOPE NOPE NOPE');
       //alert(xhr); // responseText -- текст ответа.
    }
    
   
 }

}

//UNLOCK DELETE RECORD

function deletelock(id) { //var id = "testing...."; //var datenow = new Date(); //var json = JSON.stringify({"id":id,"date":{"$date":datenow}}); // 1) Lets get the _id of the record var xhr1 = new XMLHttpRequest(); xhr1.open('GET', 'https://api.mongolab.com/api/1/databases/mailhandler/collections/locks?apiKey=' + mongoAPI_KEY + '&q={"id":"'+ id +'"}', true); xhr1.setRequestHeader("Content-Type", "application/json"); xhr1.send(); console.log(xhr1); xhr1.onreadystatechange = function() { //alert('2'); //if (xhr.readyState != 4) return; if (xhr1.readyState != 4) return; if (xhr1.status != 200) { //alert("ERROR!" + xhr);

             } 
               else 
               {
                 var parsedresponse = JSON.parse(xhr1.responseText);
                 var recordid = parsedresponse [0]._id.$oid
                 //console.log(recordid);
                 //alert(recordid[0]._id.$oid);

         
                 var xhr = new XMLHttpRequest();
                 xhr.open("DELETE", "https://api.mongolab.com/api/1/databases/mailhandler/collections/locks/"+recordid+"?apiKey=" + mongoAPI_KEY, true);
                 xhr.setRequestHeader("Content-Type", "application/json");
                 xhr.send();
              }
       }

}

//REPLY LOGGING LOGIC

function writereply(item) { var datenow = new Date(); var recipient_formatted = "<"+item.recipient+">"; var json = JSON.stringify({"id":item.id,"date":{"$date":datenow},"handler":item.handler,"message":item.message,"recipient":recipient_formatted});

// Send to Mongo
var xhr = new XMLHttpRequest();
xhr.open("POST", "https://api.mongolab.com/api/1/databases/mailhandler/collections/sent/?apiKey=" + mongoAPI_KEY, true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(json);

}

//Get person with last response function gethandler(mailitem) { var xhr2 = new XMLHttpRequest(); //var query = JSON.stringify({"id":"test2"}); //alert(mailitem.from);

 console.log(mailitem);
 xhr2.open('GET', 'https://api.mongolab.com/api/1/databases/mailhandler/collections/sent?apiKey=' + mongoAPI_KEY + '&q={"recipient":"'+mailitem.from+'"}&s={"date":-1}', true);
 xhr2.send();
  
  
  
   xhr2.onreadystatechange = function()

{ //alert('2'); if (xhr2.readyState != 4) return; if (xhr2.status != 200) { alert("ERROR!" + xhr);

   } 
   else 
    {
        // вывести результат
         //console.log(mailitem + 'Finittaaa');
         var parsedresponse = JSON.parse(xhr2.responseText);
         //console.log(xhr2.responseText);
         try
         {
             var lasthandler = parsedresponse[0].handler;
         
               //console.log("SOOOOOOOOOOOOOOOOOOO:  " + parsedresponse);
               //alert(mailitem.id); 
             var elem =  document.getElementById(mailitem.id);
        
             elem.cells[0].innerHTML = '<img style = "width:50px; height:50px;" src ="images/archiviazione.png"><br/>'+lasthandler;
             console.log(xhr2.status);
             //alert(xhr); // responseText -- текст ответа.
         }
        catch(e)
         {
            var elem =  document.getElementById(mailitem.id);
            elem.cells[0].innerHTML = '<img style = "width:50px; height:50px;" src ="images/archiviazione.png"><br/>';
            
         }
    }
    
   
 }

}

//LONG LOCKS LOGIC function checklonglocks() {

}

⚠️ **GitHub.com Fallback** ⚠️