尝试将玩家对象添加到我的会话中的玩家阵列

问题描述:

我正在尝试为正在制作的网页游戏创建一个大厅,并且我想将正在创建大厅的人添加到大厅的“玩家“阵列。我正在使用解析,并且我不能为我的生活弄清楚如何将播放器对象附加到数组中。任何帮助都很棒!尝试将玩家对象添加到我的会话中的玩家阵列

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(); 
     } 
     }); 
    } 
} 

您无法理解回调是如何工作的。我建议你阅读关于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'回调。我已经更新了我的答案。 –