Синтаксический анализ облачного кода сервера, получение и обновление объекта

Когда пользователь делится постом, я хочу иметь возможность дать ему за это вознаграждение. Я вызываю облачную функцию из xcode вот так.

PFCloud.callFunction(inBackground: "shares", withParameters: ["objectID" : "z2pU3UDFrh"])

Я жестко запрограммировал идентификатор объекта, просто чтобы проверить, работает ли он. Вот моя функция облачного кода, которая вызывается

  Parse.Cloud.define("shares", function(request, response) {

    var shareQuery = new Parse.Query("Parse.POSTS");
    shareQuery.get(request.params.objectID, {
      success: function(object) {
        console.log(object)
        object.increment("score");
        object.save();
      },
      error: function(error) { },
      useMasterKey: true
    });

  });

когда я проверяю журналы, он печатает "undefined", и оценка остается неизменной


person user6520705    schedule 29.08.2017    source источник
comment
Как называется таблица? POSTS (по соглашению, вы должны использовать верблюжий футляр)?   -  person nathan    schedule 29.08.2017
comment
да, это называется ПОЧТЫ   -  person user6520705    schedule 30.08.2017


Ответы (1)


Заменить var shareQuery = new Parse.Query("Parse.POSTS"); на
var shareQuery = new Parse.Query("POSTS");

Parse.Cloud.define("shares", function(request, response) {

    var shareQuery = new Parse.Query("POSTS");
    shareQuery.get(request.params.objectID, {
      success: function(object) {
        console.log(object)
        object.increment("score");
        object.save();
      },
      error: function(error) {
        console.error(error)
      },
      useMasterKey: true
    });

  });
person nathan    schedule 29.08.2017
comment
похоже, это сработало, но теперь я получаю сообщение об ошибке в журналах, в котором говорится, что объект не найден, хотя на самом деле существует и объект с этим objectId - person user6520705; 29.08.2017
comment
Включите режим VERBOSE, это может помочь разобраться в проблеме - person nathan; 29.08.2017
comment
stackoverflow.com/ вопросы / 25622991 / u отсутствуют. где равно, чтобы увидеть принятые ответы по ссылке - person Robert Rowntree; 29.08.2017
comment
get( objectId, options ) предоставляется JS SDK, если известен objectId. parseplatform.org/Parse-SDK-JS/api/ классы /. Не нужно equalsTo - person nathan; 29.08.2017
comment
еще одна попытка. если вместо объекта вы получаете response = empyset, вам следует проверить ACL на объектах POSTS. Если запрос отправлен пользователем без разрешений на POSTS, то запрос ничего не вернет. - person Robert Rowntree; 30.08.2017
comment
@RobertRacentree Я считаю, что проблема связана с acl - можно ли исправить это, не предоставляя общедоступный доступ на запись - person user6520705; 31.08.2017
comment
GET для объекта в POSTS, который существует, но на самом деле не извлекается, может быть вызван отсутствием разрешений READ в ACL. Вам может потребоваться дополнительная информация о реализации безопасности ACL. Обычно при создании вы предоставляете ПУБЛИЧНОЕ ЧТЕНИЕ в ACL, и тогда мир может прочитать объект. - person Robert Rowntree; 31.08.2017
comment
По умолчанию доступ для чтения к объектам выглядит как общедоступный доступ для чтения, только когда я изменяю их на общий доступ для записи, функция облачного кода фактически увеличивает число. - person user6520705; 10.09.2017