2015-10-21 2 views
0

Я пытаюсь создать Лобби для веб-игры, над которой я работаю, и хочу добавить человека, который создает лобби в лобби «Игроки» "массив. Я использую синтаксический анализ, и я не могу для жизни понять, как добавить только объект игрока в массив. Любая помощь велик!Попытка добавить объект игрока к массиву игроков в моей сессии

function createLobby(){ 
    var ses = Parse.Object.extend("Session"); 
    var query = new Parse.Query(ses); 
    var exists = false; 
    query.equalTo("sessionName", document.getElementById("lobby").value); 
    query.find({ 
    success: function(results) { 
     console.log("Successfully retrieved " + results.length); 
     if(results.length!=0){ 
     alert("Session already exists"); 
     exists = true; 
     } 
    }, 
    error: function(error) { 
     alert("Error: " + error.code + " " + error.message); 
    } 
    }); 
    if(exists==false){ 
     session.set("sessionName",document.getElementById("lobby").value); 
     var Players = Parse.Object.extend("Player"); 
     var query = new Parse.Query(Players); 
     query.equalTo("Name", "testName"); 
     query.find({ 

     success: function(results) { 
     var query2 = new Parse.Query(Players); 
     query2.get(results[0].id, { 
      success: function(k) { 
      console.log(k); 
      session.add("Players", k); 
      }, 
      error: function(object, error) { 
       // The object was not retrieved successfully. 
       // error is a Parse.Error with an error code and message. 
      } 
     }); 
     }, 
     error: function(error) { 
     alert("Error: " + error.code + " " + error.message); 
     } 
     }); 

     session.save(null, { 
     success: function(object) { 
     $(".success").show(); 
     }, 
     error: function(model, error) { 
     $(".error").show(); 
     } 
     }); 
    } 
} 

ответ

0

Вы не понимаете, как работают обратные вызовы. Я рекомендую вам прочитать о обратных вызовах и обещаниях JavaScript. Вот как это должно быть написано:

function createLobby() { 
    var ses = Parse.Object.extend("Session"); 
    var query = new Parse.Query(ses); 
    var exists = false; 
    query.equalTo("sessionName", document.getElementById("lobby").value); 
    query.find({ 
    success: function(results) { 
     console.log("Successfully retrieved " + results.length); 
     if (results.length != 0) { 
     alert("Session already exists"); 
     return; 
     } 
     session.set("sessionName", document.getElementById("lobby").value); 
     var Players = Parse.Object.extend("Player"); 
     var query = new Parse.Query(Players); 
     query.equalTo("Name", "testName"); 
     query.find({ 
     success: function(results) { 
      var query2 = new Parse.Query(Players); 
      query2.get(results[0].id, { 
      success: function(k) { 
       console.log(k); 
       session.add("Players", k); 
      }, 
      error: function(object, error) { 
       // The object was not retrieved successfully. 
       // error is a Parse.Error with an error code and message. 
      } 
      }); 
     }, 
     error: function(error) { 
      alert("Error: " + error.code + " " + error.message); 
     } 
     }); 
     session.save(null, { 
     success: function(object) { 
      $(".success").show(); 
     }, 
     error: function(model, error) { 
      $(".error").show(); 
     } 
     }); 
    }, 
    error: function(error) { 
     alert("Error: " + error.code + " " + error.message); 
    } 
    }); 
} 
+0

На самом деле, при анализе функция ошибки не вызывается, если не было реальной ошибки. Даже если это не так, это все еще успех. –

+0

Итак, вы просто переместите этот фрагмент кода в обратный вызов 'success' вместо обратного вызова' error'. Я обновил свой ответ. –

Смежные вопросы