尝试将玩家对象添加到我的会话中的玩家阵列
问题描述:
我正在尝试为正在制作的网页游戏创建一个大厅,并且我想将正在创建大厅的人添加到大厅的“玩家“阵列。我正在使用解析,并且我不能为我的生活弄清楚如何将播放器对象附加到数组中。任何帮助都很棒!尝试将玩家对象添加到我的会话中的玩家阵列
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);
}
});
}
事实上,与解析误差函数不叫,除非有一个实际的错误。即使它不在那里,它仍然是成功的。 –
好吧,那么你只需将这段代码移入'success'回调代替'error'回调。我已经更新了我的答案。 –