为什么我的函数在 Parse Cloud Code 中不起作用?当我在 Angular 和 Express 中测试时它有效
Why isn't my function working in Parse Cloud Code? It works when I test in Angular and Express
为什么我的代码没有进展?我在 Angular 和 Express 中对其进行了测试,代码的进展仅受无法使用新数据编辑用户 table 的限制,因为主密钥是必需的。我哪里错了?
Parse.Cloud.define("someFunction", function(request, response) {
Parse.Cloud.useMasterKey();
var user = Parse.Object.extend("User");
var query = new Parse.Query(Parse.User);
var Table1 = Parse.Object.extend("Table1");
var table1Query = new Parse.Query(Table1);
var Table2 = Parse.Object.extend("Table2");
var table2Query = new Parse.Query(Table2);
var Ids = request.params.data; //this is an array of Parse.Object Ids
var array = [];
var x = Ids.length;
while (x--){
var Id = Ids[x];
console.log("This is active");//I know this working
table1Query.equalTo("user", {__type: "Pointer", className: "_User",
objectId: Id});
table1Query.find({
success: function (results) {
var resultIds = _.map(results, function (n) {
return n.id});
var resultObjs = _.map(results, function (n) {
return return _.extend(_.find(n), {id: n.id})});
var a = resultIds.length;
while (a--) {
var resultId = resultIds[a];
console.log("I don't know why this is not coming up!?!");//Why isn't this working?
table2Query.equalTo("user", {__type: "Pointer", className: "_User",
objectId: resultId});
table2Query.find({
success: function (items) {
var MA = _.map(_.flatten(items), function (n) {
return _.find(n)});
var step3 = _.map(resultObjs, function (n) {return _.extend(n, {
Matched: _.filter(MA, function (a) {return a.result.id == n.id})})});
var total = Math.round(_.reduce(_.map(step3, function (n) {return n.Bill
}), function (memo, num) {return memo + num;}, 0) * 100) / 100;
var duty = function (total, id) {
var promise = new Parse.Promise();
table2Query.get(id, {
success: function (Answer) {
Answer.set("duty", total);
Answer.save().then(function (difresult) {
response.success(difresult);
}, function (error) {
response.error(error);})
}
});
}
array.push(duty(Answer, Id));
}
})
}
}
})
}
return
Parse.Promise.when(array).then(function() {
response.success("Successfully retrieved Total Bills.");
},
function(error) {
response.error("Something is still wrong");
console.log(error);
});;
})
让我们先修正一些编码错误,然后才能继续。
添加“;”在下面代码的末尾。
var Ids = req.params.data
var x = Ids.length
var a = resultIds.length
array.push(duty(Answer, Id))
然后把req改成request
var Ids = req.params.data
至
var Ids = request.params.data
为什么我的代码没有进展?我在 Angular 和 Express 中对其进行了测试,代码的进展仅受无法使用新数据编辑用户 table 的限制,因为主密钥是必需的。我哪里错了?
Parse.Cloud.define("someFunction", function(request, response) {
Parse.Cloud.useMasterKey();
var user = Parse.Object.extend("User");
var query = new Parse.Query(Parse.User);
var Table1 = Parse.Object.extend("Table1");
var table1Query = new Parse.Query(Table1);
var Table2 = Parse.Object.extend("Table2");
var table2Query = new Parse.Query(Table2);
var Ids = request.params.data; //this is an array of Parse.Object Ids
var array = [];
var x = Ids.length;
while (x--){
var Id = Ids[x];
console.log("This is active");//I know this working
table1Query.equalTo("user", {__type: "Pointer", className: "_User",
objectId: Id});
table1Query.find({
success: function (results) {
var resultIds = _.map(results, function (n) {
return n.id});
var resultObjs = _.map(results, function (n) {
return return _.extend(_.find(n), {id: n.id})});
var a = resultIds.length;
while (a--) {
var resultId = resultIds[a];
console.log("I don't know why this is not coming up!?!");//Why isn't this working?
table2Query.equalTo("user", {__type: "Pointer", className: "_User",
objectId: resultId});
table2Query.find({
success: function (items) {
var MA = _.map(_.flatten(items), function (n) {
return _.find(n)});
var step3 = _.map(resultObjs, function (n) {return _.extend(n, {
Matched: _.filter(MA, function (a) {return a.result.id == n.id})})});
var total = Math.round(_.reduce(_.map(step3, function (n) {return n.Bill
}), function (memo, num) {return memo + num;}, 0) * 100) / 100;
var duty = function (total, id) {
var promise = new Parse.Promise();
table2Query.get(id, {
success: function (Answer) {
Answer.set("duty", total);
Answer.save().then(function (difresult) {
response.success(difresult);
}, function (error) {
response.error(error);})
}
});
}
array.push(duty(Answer, Id));
}
})
}
}
})
}
return
Parse.Promise.when(array).then(function() {
response.success("Successfully retrieved Total Bills.");
},
function(error) {
response.error("Something is still wrong");
console.log(error);
});;
})
让我们先修正一些编码错误,然后才能继续。
添加“;”在下面代码的末尾。
var Ids = req.params.data
var x = Ids.length
var a = resultIds.length
array.push(duty(Answer, Id))
然后把req改成request
var Ids = req.params.data
至
var Ids = request.params.data