我有这个云端代码,但它似乎只有在我得到&#34时才能工作;成功/错误未被调用"错误作为回应。
Parse.Cloud.define("Move", function(request, response) {
var params = request.params;
var Player = Parse.Object.extend("Player");
query = new Parse.Query("Player");
query.get(params.id, {
success: function(p) {
switch(params.direction){
case "up": p.set("mapy", p.get("mapy") - 1, { success: function(p) {}, error: function(p, error) { response.error(error);}}); break;
case "down": p.set("mapy", p.get("mapy") + 1, { success: function(p) {}, error: function(p, error) { response.error(error);}}); break;
case "left": p.set("mapx", p.get("mapx") - 1, { success: function(p) {}, error: function(p, error) { response.error(error);}}); break;
case "right": p.set("mapx", p.get("mapx") + 1, { success: function(p) {}, error: function(p, error) { response.error(error);}}); break;
}
p.save();
},
error: function(error) {
console.error("Got an error " + error.code + " : " + error.message);
}
});
}
//response.success("success ");
如果运行最后一行(未注释),我会得到一个肯定的回复但是对解析变量没有任何改动 我应该使用aftersave吗?如果是这样,怎么样?
答案 0 :(得分:0)
由于你正在处理返回的对象,所以我认为你应该在这里使用Promise Chaining的概念:https://parse.com/docs/js/guide#promises
Parse.Cloud.define("Move", function(request, response) {
var params = request.params;
var Player = Parse.Object.extend("Player");
query = new Parse.Query("Player");
query.get(params.id).then(function(p) {
switch(params.direction){
case "up": p.set("mapy", p.get("mapy") - 1); break;
case "down": p.set("mapy", p.get("mapy") + 1); break;
case "left": p.set("mapx", p.get("mapx") - 1); break;
case "right": p.set("mapx", p.get("mapx") + 1); break;
}
return p.save();
}).then(function(success){
response.success();
},function(error){
console.error("Got an error " + error.code + " : " + error.message);
});
});