Ошибка: анализ объектов здесь запрещен

Когда я пытаюсь запустить функцию подсчета, я получаю

Ошибка: анализ объектов здесь запрещен

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

Этот документ выручит меня

Другие вопросы по тегам