Ошибка: анализ объектов здесь запрещен
Когда я пытаюсь запустить функцию подсчета, я получаю
Ошибка: анализ объектов здесь запрещен
E2015-11-09T12:36:10.778Z]v184 Ran cloud function count with:
Input: {}
Result: Error: Parse Objects not allowed here
at n (Parse.js:16:1063)
at Parse.js:16:1927
at Array.map (native)
at n (Parse.js:16:1904)
at n (Parse.js:16:1995)
at r.default (Parse.js:16:2422)
at Object.o.default.setCloudController.run (Parse.js:13:2159)
at Object.n [as run] (Parse.js:13:1730)
at e.query.find.success (main.js:10:19)
at e.<anonymous> (Parse.js:14:28224)
Результаты поиска приводят меня к этому вопросу, но во всех руководствах упоминаются параметры отправки таким образом. И этот код раньше работал хорошо.
Функция подсчета:
Parse.Cloud.define('count', function(request, response) {
var query = new Parse.Query('MyS');
query.equalTo("Notify", true);
query.notEqualTo ("MainEventCode", '5');
query.find({
success: function(results) {
Parse.Cloud.run('http', {params : results}).then(
function(result) {
console.log('httpResponse is : ' + result);
response.success('Done !');
}, function(error) {
console.log('Error while RUN !' + error);
});
},
error: function(error) {
response.error(error);
}
});
});
Функция http:
Parse.Cloud.define('http', function(request, response) {
var query = new Parse.Query(Parse.Installation);
.
.
.
}
1 ответ
Решение
Я предполагаю, что results
это массив PFObjects
, К сожалению, вы не можете отправить PFObjects
или массив, содержащий PFObjects
в качестве параметров. Вместо этого вам нужно будет отправить массив их идентификаторов объектов и получить фактические объекты в вашей функции http.
Я рекомендую передать в функцию идентификатор объекта. Затем в облачной функции:
var Movie = Parse.Object.extend("MovieClass");
Parse.Cloud.define("averageStars", async (request) => {
//Creating the ParseObject
var pointer = Movie.createWithoutData(request.params.obj_id);
//Creating a query
const query = new Parse.Query("ReviewClass");
query.equalTo("field_pointer_movie",pointer);
const results = await query.find();
let sum = 0;
for (let i = 0; i < results.length; ++i) {
sum += results[i].get("stars");
}
return sum / results.length;
});
Этот документ выручит меня